[Python-de] super() vs. self.__class__

Rainer Fischbach fischbach at ecs-gmbh.de
Thu Sep 5 15:07:29 EDT 2002


kleines PS noch:

ein besonders aparter Effekt tritt auf, wenn hi in Y _keinen_ super-Aufruf
macht. Dann wird das hi aus A überhaupt nicht aufgerufen, obwohl der/die
Autor/in von X sicher meinte, er würde hi in der Oberklasse bzw. den
Oberklassen von A aufrufen; d. H. die Bedeutung eines Stücks Code ändert
sich dadurch, dass in einem ganz anderen Modul, der _keine_Beziehung zu X
hat, etwas geschieht oder auch nicht!

nach dem Auskommentieren des super-Aufrufs in Y:

class Y (A):
    def hi (self, caller = 'Y'):
        #super (Y, self).hi ('Y')
        print 'class >%s< called from >%s<' % ('Y', caller)

>>> c = C()
>>> c.hi ('extern')
class >Y< called from >X<
class >X< called from >C<
class >C< called from >extern<>

sl, Rainer

    Mit freundlichen Gruessen

    i.V.
    Rainer Fischbach
______________________________________________________

    ECS
    Engineering Consulting & Solutions GmbH
    Muehlstrasse 3
    D-92318  Neumarkt

    Phone:               +49 (0)9181 - 4764-84
    Fax:                 +49 (0)9181 - 4764-50
    Mobil:               +49 (0)171  - 41 41 570
    e-mail:              fischbach at ecs-gmbh.de
    WWW:                 http://www.ecs-gmbh.de
______________________________________________________






More information about the Python-de mailing list