Lassen Sie sagen, ich habe 3 Klassen: A, B und C. A ist eine Basisklasse für B und B für C-Hierarchie normalerweise hier gehalten wird, aber für eine Methode sollte es anders sein. Für C-Klasse sollte es handeln, wie es von A.Python Erben von einer Klasse, aber überschreiben Methode Aufruf einer anderen Klasse?
Zum Beispiel wie diese vererbt wurde:
class A(object):
def m(self):
print 'a'
class B(A):
def m(self):
super(B, self).m()
print 'b'
class C(B):
def m(self):
super(A, self).m()
print 'c'
Also im Grunde sollte es so funktionieren:
a = A()
a.m()
a
b = B()
b.m()
a
b
c = C()
c.m()
a
c
Aber es geht nicht auf Arbeit für die C-Klasse, weil ich diesen Fehler erhalte:
Um dies für C-Klasse zu lösen, könnte ich von Clas erben s A, aber ich möchte alles von B erben und für diese spezifische Methode m
Aufruf Super für Basisklasse A. Ich meine, dass diese Methode eine Ausnahme ist. Oder sollte ich es irgendwie anders für Klasse C nennen, um zu arbeiten?
Wie kann ich das tun?
hast du 'a.m (Selbst-) versuchen' statt mit 'super'? –
@MathiasEttinger nein habe ich nicht, aber jetzt habe ich es ausprobiert und es funktioniert perfekt. Vielen Dank. Sie können es als Antwort veröffentlichen, weil es mein Problem, dass zur Arbeit – Andrius
gelöst, a.m() muss eine Klassenmethode – fixmycode