Heim > Artikel > Backend-Entwicklung > Eine kurze Erklärung der Python-Vererbung und Mehrfachvererbung (Codebeispiel)
Was dieser Artikel Ihnen bietet, ist eine einfache Erklärung (Codebeispiel) der Python-Vererbung. Er hat einen gewissen Referenzwert. Ich hoffe, er wird Ihnen hilfreich sein.
Beachten Sie Folgendes:
Das direkte Unterklassifizieren integrierter Typen (z. B. dict, list oder str) ist fehleranfällig, da Methoden integrierter Typen normalerweise vom Benutzer überschriebene Methoden ignorieren und erstellen Sie keine Unterklassen. Benutzerdefinierte Klassen sollten beim Klassifizieren integrierter Typen das Sammlungsmodul erben.
def __setitem__(self, key, value): super().__setitem__(key, [value] * 2) # 错误案例 class AnswerDict(dict): def __getitem__(self, item): # 错误案例 return 42 import collections class DoppelDict2(collections.UserDict): # 正确案例 def __setitem__(self, key, value): super().__setitem__(key, [value] * 2) class AnswerDict2(collections.UserDict): # 正确案例 def __getitem__(self, item): return 42
Ein weiteres Problem im Zusammenhang mit der Mehrfachvererbung ist: Wenn eine Oberklasse derselben Ebene ein Attribut mit demselben Namen definiert, wie kann Python welches verwenden? Methode wird aufgerufen, durch Methodenanalysereihenfolge
>>> D.mro()[f90f74cf2b5eef2157d27f4b07137685, d3d10dde313d07caf2874a0faa31cc27, 3c8ab9bdf9f4838c4d1910062f257eb2, d65e71c32c2035ca4f3e3c46100a7a5f, 0b6b3070adce8118f880cf43f8bc8037]
Wenn Sie Methodenaufrufe an die Superklasse delegieren möchten, empfiehlt sich die Verwendung von integrierte super( )-Funktion.
Das Folgende ist die Interpretation der d.pingpong()-Methode
>>> self.ping()
Ping: 0fe541444447db39b3382d11034c5b53 Post-Ping: 0fe541444447db39b3382d11034c5b53 Der erste Aufruf ist self.ping(), der die Ping-Methode der Klasse D ausführt zweiter Aufruf Der eine ist super().ping(), überspringen Sie die Ping-Methode von Klasse D und suchen Sie die Ping-Methode von Klasse A. Ping: 0fe541444447db39b3382d11034c5b53
Der dritte Aufruf ist self Die auf __mro__ basierende Methode .pong() findet die von Klasse B implementierte Pong-Methode. pong: 0fe541444447db39b3382d11034c5b53
Der vierte Aufruf ist super().pong(), das ebenfalls auf __mro__ basiert, finden Sie die von Klasse B implementierte Pong-Methode. pong: 0fe541444447db39b3382d11034c5b53
Der fünfte Aufruf ist C.pong(self), ignoriert __mro__ und findet C Die von der Klasse implementierte Pong-Methode: 0fe541444447db39b3382d11034c5b53
Verwandte Empfehlungen:
Einzelvererbung und Mehrfachvererbung in PythonErklärung von Python-Klassen und Vererbung
Das obige ist der detaillierte Inhalt vonEine kurze Erklärung der Python-Vererbung und Mehrfachvererbung (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!