I'm learning the Python programming language and I've came across something I don't fully understand.
In a method like:
def method(self, blah): def __init__(?): .... ....
self do? What is it meant to be? Is it mandatory?
What does the
__init__ method do? Why is it necessary? (etc.)
I think they might be OOP constructs, but I don't know very much.
In this code:
class A(object): def __init__(self): self.x = 'Hello' def method_a(self, foo): print self.x + ' ' + foo
self variable represents the instance of the object itself. Most object-oriented languages pass this as a hidden parameter to the methods defined on an object; Python does not. You have to declare it explicitly. When you create an instance of the
A class and call its methods, it will be passed automatically, as in ...
a = A() # We do not pass any argument to the __init__ method a.method_a('Sailor!') # We only pass a single argument
__init__ method is roughly what represents a constructor in Python. When you call
A() Python creates an object for you, and passes it as the first parameter to the
__init__ method. Any additional parameters (e.g.,
A(24, 'Hello')) will also get passed as arguments--in this case causing an exception to be raised, since the constructor isn't expecting them.