Heim > Artikel > Backend-Entwicklung > Ausführliche Erläuterung der Klassenvererbung in Python anhand von Beispielen
In diesem Artikel werden hauptsächlich relevante Informationen zu detaillierten Beispielen für die Vererbung von Python-Klassen vorgestellt. Freunde, die sie benötigen, können auf
Vererbung von Python-Klassen
für viele Artikel verweisen Bei der Erläuterung der Vererbung von Python-Klassen sprechen die meisten von ihnen über Konzepte wie Oop und Polymorphismus. Es ist möglicherweise nicht so hilfreich, den in verschiedenen Situationen geschriebenen Code zu verwenden Auswirkung der Ausführung des Codes für eine bestimmte Codesituation. Dies kann für Entwickler hilfreicher sein. Reden Sie keinen Unsinn, sondern gehen Sie direkt zum Code über.
Es gibt keinen Unterschied zwischen klassischen Klassen und Klassen neuen Stils. Die folgende Analyse gilt sowohl für Klassen neuen Stils als auch für klassische Klassen.
Für die Funktion __init__ Die Klasse ist nur eine Initialisierung. Es handelt sich um eine aufgerufene Funktion (ps: Initialisierung und Instanzerstellung sind kein Prozess, die Erstellung der Instanz wird durch eine Erstellungsfunktion abgeschlossen), wenn keine explizite Deklaration der Funktion __init__ in der Klasse vorhanden ist Unterklasse, die Unterklasse ruft die Funktion __init__ der übergeordneten Klasse auf, die Funktion __init__ in der übergeordneten Klasse wird jedoch nicht erneut aufgerufen. Wenn die Funktion __init__ explizit deklariert wird, wird die Initialisierung der übergeordneten Klasse nicht aufgerufen Während der Initialisierung der Unterklasse wird nur die in der Unterklasse deklarierte Funktion __init__ aufgerufen. Gleichzeitig werden in der Unterklasseninstanz keine Attribute deklariert :
Das Ergebnis der Ausführung zu diesem Zeitpunkt ist
class animal(): name="hh" sex="man" def __init__(self): self.height=10 self.weight=50 def deception(self): print "ansible.height:"+self.height+" animal.weight:"+self.weight def run(self): print "animal is running...." class dog(animal): def __init__(self): pass if __name__=="__main__": dg=dog() print dg.__dict__
{}
Wenn die Hundeklasse wie folgt geändert wird (ps: Es wird keine __init__-Deklaration angezeigt) Methode zu diesem Zeitpunkt):
Zu diesem Zeitpunkt ist das Ergebnis aufgrund des direkten Aufrufs der __init__-Methode des übergeordneten Klassentiers wie folgt:class dog(animal): def run(self): print "dog is running..."If Eine Klasse erbt zu diesem Zeitpunkt die Hundeklasse. Was passiert zu diesem Zeitpunkt? (Der Python-Interpreter sucht zunächst in der Unterklasse nach der Methode __init__. Wenn sie nicht gefunden wird, sucht er dann in der übergeordneten Klasse danach, bis sie gefunden wird, und führt sie aus. Die Methode __init__ der übergeordneten Klasse wird nicht mehr ausgeführt die übergeordnete Klasse. Zu diesem Zeitpunkt wurden in der __init__-Methode keine Attribute erstellt, die nicht ausgeführt wurden. Im obigen Beispiel verfügt das bei der ersten Ausführung erhaltene Beispiel beispielsweise nicht über die Attribute „Gewicht“ und „Höhe“. >
{'weight': 50, 'height': 10}
Das Ergebnis ist zu diesem Zeitpunkt das Gleiche:
class animal(): name="hh" sex="" def __init__(self): self.height=10 self.weight=50 def deception(self): print "ansible.height:"+self.height+" animal.weight:"+self.weight def run(self): print "animal is running...." class dog(animal): def __init__(self): pass def run(self): print "dog is running..." class jinmao(dog): # def __init__(self): # self.ji="jinmao" pass if __name__=="__main__": dg=jinmao() print dg.__dict__{} Was passiert bei der Mehrfachvererbung einer Klasse? (Bei der Mehrfachvererbung wird die __init__-Funktion in der übergeordneten Klasse ausgeführt, die durch den ersten Parameter im Vererbungsparameter der Klasse deklariert wird. Wenn in der übergeordneten Klasse keine __init__-Funktion vorhanden ist, suchen Sie weiter, um festzustellen, ob eine vorhanden ist Wenn die übergeordnete Klasse gefunden wird oder nicht, wird der Prozess verwendet. Der Code ist nicht initialisiert. Sie können ihn anhand des vorherigen Beispiels selbst testen.
Die Verwendung und Eigenschaften von Super zum Aufrufen von Methoden in übergeordneten Klassen in Unterklassen.
Zusammenfassung:
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Klassenvererbung in Python anhand von Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!