2024-04-25 02:19:44 发布
网友
我有以下资料:
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中的原始A.x时,如何引用它?
A.y
A.x
A
像这样:
class A(object): def x(self): print "Hello" def y(self): A.x(self)
……虽然有点奇怪。如果您不希望在这种情况下调用它,为什么您(或者为什么有人)重写x?
x
如果不想覆盖它,请给它一个双下划线前缀:
class A(object): def __x(self): print "Hello" def y(self): self.__x()
任何在派生类中定义__x的人都将得到他们自己的唯一__x,它不会覆盖您的类-请参见Private Variables and Class-local References。
__x
你想要“超级”功能:
super(Abis, self).x ()
这将在基类上调用“x”。参见:docs.python.org/2/library/functions.html#super
像这样:
……虽然有点奇怪。如果您不希望在这种情况下调用它,为什么您(或者为什么有人)重写
x
?如果不想覆盖它,请给它一个双下划线前缀:
任何在派生类中定义
__x
的人都将得到他们自己的唯一__x
,它不会覆盖您的类-请参见Private Variables and Class-local References。你想要“超级”功能:
这将在基类上调用“x”。参见:docs.python.org/2/library/functions.html#super
相关问题 更多 >
编程相关推荐