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..."
{'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__
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!