我有兩個很簡單的類寫在下面。 Human
繼承自Mammal
類。當我打電話給print(jo.drinkMe("sage"))
時,我希望打印出「生病」,但打印出「良好」。我認爲self.problem
中的Human
類會覆蓋Mammal
類中的self.problem
。我需要做些什麼才能讓我的代碼打印出「病態」結果?如何防止父類的實例變量被python中的子類覆蓋?
class Mammal:
def __init__(self):
self.problem = "sage"
self.result = "sick"
def drinkMe(self,tea):
if tea == self.problem:
return self.result
else:
return "fine"
class Human(Mammal):
def __init__(self):
super().__init__()
self.problem = "paint"
self.result = "die"
def drinkMe(self,tea):
if tea == self.problem:
return self.result
else:
return super().drinkMe(tea)
jo = Human()
to = Mammal()
print(jo.drinkMe("sage"))
你想讓這些問題變量分開嗎?如果您嘗試執行'jo.problem',會發生什麼?如果對第一個問題的回答是「是」,對第二個問題的回答是「無關緊要」或「你不應該這樣做」,那麼這可能是其中一個時機,使用領先者實際上是一個好主意雙下劃線。 – user2357112
「人類」和「哺乳動物」類都沒有屬性「問題」,所以它不能被覆蓋。 –
@ juanpa.arrivillaga雖然沒有解釋,但這並不是一個好主意。 –