[Python von Grund auf lernen] 48. Detaillierte Erläuterung der Vererbung und Mehrfachvererbung in Python

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.
Fügen Sie hier eine Bildbeschreibung ein

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 Dogeine Klasse von einer Klasse erbt Animalund XiaoTianQuanvon ihr erbt Dog, XiaoTianQuanverfügt die Klasse über Animalalle 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:

  • XiaoTianQuanKann die Methode Animalaufgerufen werden run()?
  • XiaoTianQuanKann ich Catdie darin enthaltene Methode aufrufen?

Mehrfachvererbung

Unterklassen können mehrere übergeordnete Klassen haben und über alle Eigenschaften und Methoden der übergeordneten Klassen verfügen.

Fügen Sie hier eine Bildbeschreibung ein

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.
    Fügen Sie hier eine Bildbeschreibung ein

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

objectIst die Basisklasse aller Objekte in Python und stellt einige integrierte Eigenschaften und Methoden bereit, die dirmithilfe von Funktionen angezeigt werden können.

  • Klasse im neuen Stil: Es wird empfohlen, die Klasse objectals .
  • Klassische Klasse: Eine Klasse, die nicht als Basisklasse objectgilt 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] Die Python-tkinter-Bibliothek implementiert ein GUI-Programm für den Gewichtseinheitenkonverter

[Python] Verwenden Sie Selenium, um (2023 Blog Star)-Einträge zu erhalten

[Python] Verwenden Sie Selenium und Chrome WebDriver, um Artikelinformationen im [Tencent Cloud Studio Practical Training Camp] zu erhalten.

Verwenden Sie Tencent Cloud Cloud Studio, um die Planung von Baidu AI zur Realisierung der Texterkennung zu realisieren

[Spaß mit der Python-Serie [Xiaobai muss gesehen werden] Python-Multithread-Crawler: Laden Sie Bilder von Emoticon-Paket-Websites herunter

[Play with Python-Serie] [Muss für Xiaobai gesehen werden] Verwenden Sie Python, um historische Daten von Shuangseqiu zu crawlen und visuell zu analysieren

[Mit der Python-Serie spielen] [Muss für Xiaobai gesehen werden] Verwenden Sie die Python-Crawler-Technologie, um Proxy-IP abzurufen und in einer Datei zu speichern

[Muss für Xiaobai gesehen werden] Beispiel für die Python-Bildsynthese unter Verwendung der PIL-Bibliothek, um die Synthese mehrerer Bilder nach Rängen und Spalten zu realisieren

[Xiaobai muss sehen] Der tatsächliche Kampf des Python-Crawlers lädt Bilder von Göttinnen stapelweise herunter und speichert sie lokal

[Xiaobai muss sehen] Detaillierte Analyse und Codeimplementierung des Python-Wortwolkengenerators

[Xiaobai muss sehen] Python crawlt ein Beispiel für NBA-Spielerdaten

[Muss für Xiaobai gesehen werden] Beispielcode zum Crawlen und Speichern von Himalaya-Audio mit Python

[Muss für Xiaobai gesehen werden] Technische Umsetzung der Verwendung von Python zum stapelweisen Herunterladen von League of Legends-Skin-Bildern

[Xiaobai muss sehen] Python-Crawler-Datenverarbeitung und -visualisierung

[Muss für Xiaobai gesehen werden] Python-Crawler-Programm zum einfachen Erhalten von Helden-Skin-Bildern von King of Glory

[Muss für Xiaobai gesehen werden] Verwenden Sie Python, um ein personalisiertes Listen-Word-Dokument zu erstellen

[Muss für Xiaobai gesehen werden] Python-Crawler-Kampf: Holen Sie sich Bilder von der Onmyoji-Website und speichern Sie sie automatisch

Die unverzichtbare Serie des Bibliotheksverwaltungssystems von Xiaobai – Beispielcode für Anmelde- und Registrierungsfunktionen

100 Fälle von Xiaobais tatsächlichem Kampf: Ein vollständiges und einfaches Shuangseqiu-Lotterie-Gewinnbeurteilungsprogramm, geeignet für den Einstieg in Xiaobai

Geodatenverarbeitung und Visualisierung mit Geopandas und Shapely (.shp)

Verwenden Sie Selen, um die Daten der Maoyan-Filmliste zu crawlen

Ausführliche Erläuterung des Prinzips und der Implementierung des Bildverbesserungsalgorithmus Retinex

Leitfaden zum Einstieg in Crawler (8): Schreiben Sie Crawler-Programme für Wetterdaten zur visuellen Analyse

Einführungsleitfaden für Crawler (7): Verwendung von Selenium und BeautifulSoup zum Crawlen von Douban Movie Top250 Beispielerklärung [Reptile Xiaobai muss sich ansehen]

Leitfaden zum Einstieg in Crawler (6): Anti-Crawler und fortgeschrittene Fähigkeiten: IP-Proxy, User-Agent-Verkleidung, Cookie-Bypass-Anmeldeüberprüfung und Tools zur Identifizierung von Bestätigungscodes

Einführungsleitfaden zu Crawlern (5): Verteilte Crawler und Parallelitätskontrolle [Implementierungsmethoden zur Verbesserung der Crawling-Effizienz und Anforderungsrationalitätskontrolle]

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 Crawlern (2): Verwendung regulärer Ausdrücke zur Datenextraktion und -verarbeitung

Erste Schritte mit Reptilien (1): Lernen Sie die Grundlagen und Fähigkeiten von Reptilien

Anwendung des Deep-Learning-Modells in der Bilderkennung: CIFAR-10-Datensatzpraxis und Genauigkeitsanalyse

Grundlagen der objektorientierten Python-Programmierung und Beispielcode

Anleitung zum Betrieb einer MySQL-Datenbank: Erfahren Sie, wie Sie mit Python Vorgänge hinzufügen, löschen, ändern und abfragen

Anleitung zum Betrieb von Python-Dateien: Kodierung, Lesen, Schreiben und Ausnahmebehandlung

Verwenden Sie Python und Selenium, um das Crawlen zu automatisieren

Python-Multithread- und Multiprozess-Tutorial: umfassende Analyse, Codefälle und Optimierungsfähigkeiten

Selenium Automation Toolset – Vollständiger Leitfaden und Tutorials

Von den Grundlagen des Python-Webcrawlers bis hin zum eigentlichen Kampf-Tutorial

Python-Einführungs-Tutorial: Beherrschen Sie die Grundkenntnisse der For-Schleife, der While-Schleife, der String-Operation, des Lesens und Schreibens von Dateien sowie der Ausnahmebehandlung

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

[Neueste Version im Jahr 2023] Detaillierte Erläuterung von sechs wichtigen Maßnahmen zur Verbesserung des Index des Klassifizierungsmodells

Einführende Grundlagen und fortgeschrittene Kenntnisse der Python-Programmierung, Webentwicklung, Datenanalyse sowie maschinelles Lernen und künstliche Intelligenz

Diagrammvorhersageergebnisse mit 4 Regressionsmethoden: Vektorregression, Random Forest-Regression, lineare Regression, K-Nearest Neighbors-Regression

Ich denke du magst

Origin blog.csdn.net/qq_33681891/article/details/132357453
Empfohlen
Rangfolge