是否有可能在子類中創建一個新的屬性,它將具有與父屬性相同的名稱和值(主屬性的副本)? 此屬性將由所有子子類繼承。Python:複製父屬性,給它同名
我的問題是,我只允許更改Lanc類(不允許對其他類進行更正),並且只有class superLanc應該繼承該屬性。查看class superLanc,return self.brand
應返回子類Lanc的新屬性。
class Machine(object):
def __init__(self, brand):
self.brand = brand
def start(self, attr):
return self.brand + attr
def __str__(self):
return self.brand
class Mitsh(Machine):
def mEng(self, attr):
return Machine.start(self, attr)
class Lanc(Mitsh):
def start(self, attr):
return self.brand + Mitsh.mEng(self, attr)
class superLanc(Lanc):
def start(self, attr):
return self.brand + Mitsh.mEng(self, attr)
def mEng(self, attr):
return Mitsh.mEng(self, attr)
你當然可以重載'Lanc .__ init__'並將'self.brand'設置爲你想要的。我從你的例子不明白你真正想要達到什麼。你能說明你想如何使用這些類嗎? – BrenBarn
這是一個練習,它沒有真正的目的。 我只想要在類Lanc中定義一個新的self.brand,它將與父self.brand具有相同的值,並附加一些附加值。 通過superLanc調用它時,它將返回這些新值,而對Mitsh.mEng(self,attr)的調用仍將提供Machine(父級)的self.brand值。 – Nenson
我不認爲你可以做到這一點。任何使用'self'的實例的任何超類中的任何代碼都會引用同一個對象,所以無論哪個類訪問它,'self.brand'都會具有相同的結果。 (順便說一句,這與你的問題看起來有很大的不同,你的問題並沒有說什麼就是想讓'self.brand'根據哪個類調用它而給出不同的結果。) – BrenBarn