As far as I know, self is just a very powerful convention and it\'s not really a reserved keyword in Python. Java and C# have this as a keyword. I really f
Because self is just a parameter to a function, like any other parameter. For example, the following call:
a = A() a.x()
essentially gets converted to:
a = A() A.x(a)
Not making self a reserved word has had the fortunate result as well that for class methods, you can rename the first parameter to something else (normally cls). And of course for static methods, the first parameter has no relationship to the instance it is called on e.g.:
class A:
def method(self):
pass
@classmethod
def class_method(cls):
pass
@staticmethod
def static_method():
pass
class B(A):
pass
b = B()
b.method() # self is b
b.class_method() # cls is B
b.static_method() # no parameter passed