[英]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.