2016-07-22 13 views
1

Python 2.7Python: automatisch eine übergeordnete Funktion nach dem Instanzierung Kind nennt

Ich würde eine Funktion von einem übergeordneten Objekt automotically gerne anrufen, nachdem es seinem Kind instanziiert

class Mother: 

    def __init__(self): 
     pass 

    def call_me_maybe(self): 
     print 'hello son' 


class Child(Mother): 

    def __init__(self): 
     print 'hi mom' 


# desired behavior 

>>> billy = Child() 
hi mom 
hello son 

Gibt es eine Weise, die ich tun kann, Dies?

bearbeiten, aus einem Kommentar unter:

„i gemacht haben sollte es klarer in meiner Frage, was ich wirklich will, ist eine Art von‚automatischen‘Aufruf der Mutter Methode durch die Instanziierung der allein ausgelöst "Ich habe gehofft, dass es eine Art von magischer Methode dafür geben würde, aber ich glaube nicht, dass es da ist."

+0

Welche Version von Python verwenden Sie? – cdarke

Antwort

1

Verwenden Sie super()?

class Child(Mother): 
    def __init__(self): 
     print 'hi mom' 
     super(Child, self).call_me_maybe() 
+4

Da OP scheint, Python 2 zu verwenden, kann er das bequeme 'super()' nicht benutzen. Die Version 2.x wäre "super (Kind, selbst) .call_me_maybe()". –

+0

@ HannesOvrén: Woher weißt du, dass das OP Python 2 verwendet? – cdarke

+2

@cdarke von ihrer 'print' Aussage –

4

könnten Sie super verwenden, aber Sie sollten Ihre Super erben von object gesetzt:

class Mother(object): 
#   ^
    def __init__(self): 
     pass 

    def call_me_maybe(self): 
     print 'hello son' 


class Child(Mother): 

    def __init__(self): 
     print 'hi mom' 
     super(Child, self).call_me_maybe() 

>>> billy = Child() 
hi mom 
hello son 
1

Da das Kind Klasse die Eltern Methoden erbt, können Sie einfach anrufen die Methode in der __init__() Aussage.

class Mother(object): 

    def __init__(self): 
     pass 

    def call_me_maybe(self): 
     print('hello son') 


class Child(Mother): 

    def __init__(self): 
     print('hi mom') 
     self.call_me_maybe() 
+1

Obwohl dies das Gleiche tut, besteht die Anforderung von OP darin, dass Sie die Elternmethode aufrufen. Die Benutzung von 'super' hilft ihnen zu wissen, dass sie auch das'__init__' des Elternteils mit dieser Technik aufrufen können. –