Possible Duplicate:
Understanding Python super()
Class B subclasses class A, so in B’s __init__ we should call A’s __init__ like this:
class B(A):
def __init__(self):
A.__init__(self)
But with super(), I saw something like this:
class B(A):
def __init__(self):
super(B, self).__init__() #or super().__init__()
My questions are:
-
Why not
super(B, self).__init__(self)? Just because the return proxy object is a bound one? -
If I omit the second argument in super and the return proxy object is an unbound one, then should I write
super(B).__init__(self)?
super()returns an instance of the base class, soselfgets implicitly passed to__init__()like in any other method call.With regards to your second question, that’s correct. Calling
super()without an instance as the second argument returns a reference to the class itself, not an instance constructed from your subclass instance.