Pipe in the "return" statement

Christian Heimes lists at cheimes.de
Mon Jul 25 18:11:07 CEST 2011


Am 25.07.2011 17:28, schrieb Archard Lias:
> It would be great if you could elaborate a little more on that. Am I
> not supposed to access the parent here?

You must spell out the parent explicitly, otherwise subclasses call
super() with themselves rather than the correct parent class.
self.__class__ is too dynamic here. Have a look at this example:

class A(object):
    def method(self):
        pass

class B(A):
    def method(self):
        super(self.__class__, self).method()

class C(B):
    pass

In this example, C().method() results in "super(C, self).method()"
because self.__class__ is C. However that is wrong because you have to
call super() with the direct parent.

Christian




More information about the Python-list mailing list