dan*_*ast 1 python overloading class
我有以下内容:
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()
Run Code Online (Sandbox Code Playgroud)
哪个印刷品:
Bye
Bye
Run Code Online (Sandbox Code Playgroud)
但我其实想要:
Bye
Hello
Run Code Online (Sandbox Code Playgroud)
因为我想A.y称之为"原创" A.x.我怎么可以参考原A.x中A,当派生类重载了吗?
像这样:
class A(object):
def x(self): print "Hello"
def y(self): A.x(self)
Run Code Online (Sandbox Code Playgroud)
......虽然那有点奇怪.x如果你不希望在这种情况下调用它,为什么你(或者,为什么有人)压倒一切?
如果您不希望它被覆盖,请给它一个双下划线前缀:
class A(object):
def __x(self): print "Hello"
def y(self): self.__x()
Run Code Online (Sandbox Code Playgroud)
__x在派生类中定义的任何人都将获得自己的唯一__x不会覆盖您的类 - 请参阅私有变量和类本地引用.
你想要“超级”功能:
super(Abis, self).x ()
Run Code Online (Sandbox Code Playgroud)
这将在基类上调用“x”。请参阅:docs.python.org/2/library/functions.html#super