Artikelverzeichnis
In Python kann die Vererbung in Einzelvererbung, Mehrfachvererbung und Mehrebenenvererbung unterteilt werden.
Einzelvererbung
Eine Unterklasse erbt nur eine übergeordnete Klasse, und das Konzept der Vererbung bedeutet, dass die Unterklasse alle Methoden und Eigenschaften der übergeordneten Klasse erhält.
Vererbungssyntax
class 类名(父类名):
pass
Die Unterklasse erbt von der übergeordneten Klasse und kann die bereits in der übergeordneten Klasse gekapselten Methoden nutzen, ohne sie neu definieren zu müssen. Unterklassen sollten unterklassenspezifische Eigenschaften und Methoden entsprechend ihren Verantwortlichkeiten kapseln.
Die Vererbung ist transitiv. Wenn beispielsweise Dog
eine Klasse von einer Klasse erbt Animal
und XiaoTianQuan
von ihr erbt Dog
, XiaoTianQuan
verfügt die Klasse über Animal
alle Eigenschaften und Methoden der Klasse.
Die Unterklasse verfügt über alle Eigenschaften und Methoden, die in der übergeordneten Klasse und der übergeordneten Klasse der übergeordneten Klasse gekapselt sind.
Fragen zum Nachdenken:
XiaoTianQuan
Kann die MethodeAnimal
aufgerufen werdenrun()
?XiaoTianQuan
Kann ichCat
die darin enthaltene Methode aufrufen?
Mehrfachvererbung
Unterklassen können mehrere übergeordnete Klassen haben und über alle Eigenschaften und Methoden der übergeordneten Klassen verfügen.
grammatikalisches Format
class 子类名(父类名1, 父类名2, ...)
pass
Beachten Sie Folgendes, wenn Sie die Mehrfachvererbung verwenden
- Wenn es in verschiedenen übergeordneten Klassen Methoden mit demselben Namen gibt, welche Methode der übergeordneten Klasse wird dann aufgerufen, wenn das Unterklassenobjekt die Methode aufruft? Solche verwirrenden Situationen sollten möglichst vermieden werden. Wenn es in mehreren übergeordneten Klassen Attribute oder Methoden mit demselben Namen gibt, sollte eine Mehrfachvererbung so weit wie möglich vermieden werden.
MRO in Python
Python bietet ein integriertes Attribut für Klassen __mro__
, mit dem die Suchreihenfolge von Methoden angezeigt werden kann. MRO ist die Abkürzung für Method Resolution Order und wird hauptsächlich zur Beurteilung der Aufrufreihenfolge von Methodenattributen während der Mehrfachvererbung verwendet.
Der Beispielcode lautet wie folgt:
print(C.__mro__)
Die Ausgabe ist:
(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
Suchen Sie beim Aufrufen der Methode __mro__
nach den Ausgabeergebnissen von links nach rechts:
- Wird eine Methode in der aktuellen Klasse gefunden, wird diese direkt ausgeführt, ohne nach unten zu suchen.
- Wenn sie nicht gefunden wird, wird nacheinander gesucht, ob in der nächsten Klasse eine entsprechende Methode vorhanden ist. Wenn sie gefunden wird, wird sie direkt ausgeführt, ohne weiter nach unten zu suchen.
- Wenn die letzte Klasse gefunden wird und die Methode immer noch nicht gefunden wird, meldet das Programm einen Fehler.
Klassen im neuen und alten (klassischen) Stil
object
Ist die Basisklasse aller Objekte in Python und stellt einige integrierte Eigenschaften und Methoden bereit, die dir
mithilfe von Funktionen angezeigt werden können.
- Klasse im neuen Stil: Es wird empfohlen, die Klasse
object
als . - Klassische Klasse: Eine Klasse, die nicht als Basisklasse
object
gilt und nicht empfohlen wird.
Wenn beim Definieren einer Klasse nach Python 3.x keine übergeordnete Klasse angegeben wird, erbt die Klasse standardmäßig von ihr object
. Daher sind die in Python 3.x definierten Klassen alle Klassen neuen Stils.
Wenn beim Definieren einer Klasse in Python2.x keine übergeordnete Klasse angegeben wird, erbt sie nicht von object
.
Um sicherzustellen, dass der Code sowohl in Python2.x als auch in Python3.x ausgeführt werden kann, wird beim Definieren einer Klasse empfohlen, einheitlich von dieser zu erben, wenn eine Klasse keine übergeordnete Klasse hat object
.
Beispielcode:
class 类名(object):
pass
Fortgeschrittener Fall
[Python] Python erkennt das Wort-Ratespiel – fordern Sie Ihre Intelligenz und Ihr Glück heraus!
[Python] Verwenden Sie Selenium, um (2023 Blog Star)-Einträge zu erhalten
[Xiaobai muss sehen] Detaillierte Analyse und Codeimplementierung des Python-Wortwolkengenerators
[Xiaobai muss sehen] Python crawlt ein Beispiel für NBA-Spielerdaten
[Xiaobai muss sehen] Python-Crawler-Datenverarbeitung und -visualisierung
Geodatenverarbeitung und Visualisierung mit Geopandas und Shapely (.shp)
Verwenden Sie Selen, um die Daten der Maoyan-Filmliste zu crawlen
Erste Schritte mit Crawlern (4): Der beste Weg, dynamische Webseiten mit Selenium und API zu crawlen
Leitfaden zum Einstieg in Crawler (3): Python-Netzwerkanfragen und gängige Anti-Crawler-Strategien
Erste Schritte mit Reptilien (1): Lernen Sie die Grundlagen und Fähigkeiten von Reptilien
Grundlagen der objektorientierten Python-Programmierung und Beispielcode
Anleitung zum Betrieb von Python-Dateien: Kodierung, Lesen, Schreiben und Ausnahmebehandlung
Verwenden Sie Python und Selenium, um das Crawlen zu automatisieren
Selenium Automation Toolset – Vollständiger Leitfaden und Tutorials
Von den Grundlagen des Python-Webcrawlers bis hin zum eigentlichen Kampf-Tutorial
Tutorial zur Pandas-Datenverarbeitung und -Analyse: von den Grundlagen bis zum tatsächlichen Kampf
Detaillierte Erläuterung häufig verwendeter Datentypen und zugehöriger Vorgänge in Python