Rufen Sie Basis-Methode der Klasse als abgeleitete Klasse überlädt es
Habe ich Folgendes:
class A(object):
def x(self): print "Hello"
def y(self): self.x()
class Abis(A):
def x(self): print "Bye"
a = Abis()
a.x()
a.y()
Ausgegeben:
Bye
Bye
Aber ich wollte eigentlich:
Bye
Hello
Da möchte ich A.y
nennen das "original" A.x
. Wie kann ich mich auf die original A.x
im A
, wenn der abgeleiteten Klasse überladen hat es?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie diese:
...obwohl, das ist leicht komisch. Warum bist du (oder warum ist jemand) überschreiben
x
wenn Sie nicht wollen, rief er in dieser situation?Wenn Sie nicht wollen, dass es überschrieben wird, geben Sie es ein Doppel-Unterstrich-prefix:
Jemand definieren
__x
in einer abgeleiteten Klasse wird Ihre eigenen einzigartigen__x
dass nicht überschreiben dir sehen Private Variablen und Klasse-lokale Verweise.Wollen Sie die "super" - Funktion:
Diese nennen das "x" auf die Basisklasse. Siehe: docs.python.org/2/library/functions.html#super
A
müsste wissen, dass die sub-KlasseAbis
war, das die verwendete. Die richtige Antwort ist, dass, wenn Sie wollen, es zu nennenA.x
dann rufen SieA.x(self)