我有以下内容:
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()
打印哪些:
Bye
Bye
但我其实想要:
Bye
Hello
因为我希望A.y
拨打“原始”A.x
。当派生类超载它时,如何引用A.x
中的原始A
?
答案 0 :(得分:5)
像这样:
class A(object):
def x(self): print "Hello"
def y(self): A.x(self)
......虽然这有点奇怪。如果您不想在这种情况下调用它,为什么(或者,为什么有人)会覆盖x
?
如果你不想覆盖它,请给它一个双下划线前缀:
class A(object):
def __x(self): print "Hello"
def y(self): self.__x()
在派生类中定义__x
的任何人都会获得不会覆盖您自己的唯一__x
- 请参阅Private Variables and Class-local References。
答案 1 :(得分:4)
你想要“超级”功能:
super(Abis, self).x ()
这将在基类上调用“x”。请参阅:docs.python.org/2/library/functions.html#super