Skip to main content
 首页 » 编程设计

python之派生类重载时调用基类方法

2025年05月04日19me-sa

我有以下内容:

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?

请您参考如下方法:

像这样:

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 .