ich einen Python Vortrag auf Youtube beobachten und fand eine interessante Sprache-Funktion. Wenn ich jedoch versucht habe, einen Testcode auszuführen, hat es nicht funktioniert und ich würde gerne verstehen, warum.Call Resolution, um in Python mit Mehrfachvererbung
Ich hatte erwartet, das diese drucken:
Parent
OtherParent
Aber stattdessen habe ich dies:
Parent
Parent
Beispielcode:
class Parent:
def get_message(self):
return "Parent"
class Child(Parent):
def do_print(self):
print(super().get_message())
class OtherParent:
def get_message(self):
return "OtherParent"
class OtherChild(Child, OtherParent):
pass
Child().do_print()
OtherChild().do_print()
Edit: Laufen auf Windows, Python 3.5 .1, Anaconda 4.0.0 (64-Bit)
Was ist Ihre Python-Version? – Ohumeronen
'print (OtherChild .__ MRO __)' sollte Ihre Frage – jonrsharpe
+1 auf die '__mro__' Erklärung des Verhaltens beantworten. Siehe [hier] (http://Stackoverflow.com/a/10018792/426790) für eine Antwort über die Reihenfolge der Mixins, die sich auf OtherChild auswirken (kurze Antwort: "Das MRO ist im Wesentlichen die Tiefe zuerst, von links nach rechts"). –