


Pythons super() und Mehrfachvererbung
In Python führt die Mehrfachvererbung zu Komplexitäten bei der Bestimmung, welche übergeordnete Methode aufgerufen werden soll. Die Funktion super() spielt in diesem Szenario eine entscheidende Rolle, ihr Verhalten hängt jedoch von der Methodenauflösungsreihenfolge (MRO) ab.
MRO und super()
Die MRO definiert die Reihenfolge, in der übergeordnete Klassen nach Attributen durchsucht werden. In Ihrem Beispiel:
class Third(First, Second): def __init__(self): super(Third, self).__init__() print "that's it"
super(Third, self).__init__() ruft die __init__()-Methode der ersten Klasse im MRO auf. In diesem Fall ist es „First“.
Wahl der übergeordneten Methode
Sie können mit super() nicht explizit auswählen, welche übergeordnete Methode aufgerufen werden soll. Das MRO gibt die Suchreihenfolge vor und super() bezieht sich immer auf die erste Klasse in dieser Reihenfolge.
Beispiel (Einzelpfadvererbung)
In Ihrem Beispiel mit Keine gekreuzte Vererbung, die MRO ist einfach: [Drittes, Erstes, Zweites, Objekt]. Daher ruft super(Third, self).__init__() immer First.__init__() auf.
Beispiel (gekreuzte Vererbung)
Bedenken Sie den folgenden Code:
class First(object): def __init__(self): print "first" class Second(First): def __init__(self): print "second" class Third(First): def __init__(self): print "third" class Fourth(Second, Third): def __init__(self): super(Fourth, self).__init__() print "that's it"
Das MRO ist jetzt [Viertes, Zweites, Drittes, Erstes, Objekt]. super(Fourth, self).__init__() ruft Second.__init__() auf, die erste Klasse im MRO.
Mehrdeutiges MRO
Wenn die Vererbungspfade nicht vorhanden sind (z. B. First von Second geerbt) kann Python kein kohärentes MRO aufbauen, was zu einem führt Ausnahme:
TypeError: Cannot create a consistent method resolution order (MRO) for bases Second, First
Fazit
super() ist ein leistungsstarkes Tool für die Arbeit mit Mehrfachvererbung. Das Verständnis des MRO ist jedoch entscheidend für die Vorhersage seines Verhaltens, da es vorgibt, welche übergeordnete Methode aufgerufen wird, wenn super().__init__().
verwendet wirdDas obige ist der detaillierte Inhalt vonWie funktioniert die Funktion „super()' von Python mit Mehrfachvererbung und Methodenauflösungsreihenfolge (MRO)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

PythonusesahybridmodelofCompilation und Interpretation: 1) thepythonInterPreterCompilessourceCodeIntoplatform-unintenpendentBytecode.2) Thepythonvirtualmachine (PVM) ThenexexexexecthisByTeCode, BalancingeAnsewusewithperformance.

Pythonisbothinterpreted und kompiliert.1) ItscompiledToByteCodeForPortabilityAcrossplatform.2) thytecodeTheninterpreted, und das ErlaubnisfordyNamictyPingandRapidDevelopment zulässt, obwohl es sich

ForloopsaridealWenyouKnowtHenumberofofiterationssinadvance, während whileloopsarebetterForsituationswhereyouneedtoloopuntilaconditionismet.forloopsaremoreffictionAndable, geeigneter Verfaserungsverlust, whereaswiloopsofofermorcontrolanduseusefulfulf

Forloopsareusedwhenthenumberofiterationsisknowninadvance,whilewhileloopsareusedwhentheiterationsdependonacondition.1)Forloopsareidealforiteratingoversequenceslikelistsorarrays.2)Whileloopsaresuitableforscenarioswheretheloopcontinuesuntilaspecificcond

Pythonisnotpurelyinterpretiert; itusesahybridapproachofByteCodecompilation undruntimeinterpretation.1) PythoncompilessourcecodeIntoBytecode, die ISthenexecutBythepythonvirtualmachine (Pvm)

ToconcatenatelistsinpythonWithThesameElements, Verwendung: 1) Die Operatortokeepduplikate, 2) asettoremoveduplicate, or3) listenConpRectionforControloverDuplikate, EvermethodhasDifferentPerformanceInDormplocate.

PythonisaninterpretedLuage, OfferingaseofuseandflexibilitätsbutfacingPerformancelimitationsincriticalApplications.1) InterpretedLanguages LikePythonexecutine-by-Line, ermöglicht, dassmediateFeedbackandrapidPrototyping.2) CompiledLanguagesslikec/C.5.

Useforloopswhenthenumberofofiterationssisknowninadvance und wileloopswhenCiterationsDependonacondition.1) Forloopsardealforsequencelistorranges.2) Während


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft
