簡體   English   中英

派生類重載基類方法時調用它

[英]Call base class method when derived class overloads it

我有以下幾點:

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

由於我希望Ay稱為“原始” Ax 當派生類對其進行重載時,如何在A引用原始Ax

像這樣:

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 ,而不會重寫您的__x -請參見私有變量和類本地引用

您需要“超級”功能:

super(Abis, self).x ()

這將在基類上稱為“ x”。 請參閱:docs.python.org/2/library/functions.html#super

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM