我寫了一大段很大程度上依賴於繼承和組合的代碼。現在我遇到了一個問題,即我的層次結構類需要共享變量以在彼此之間共享,但這會導致合成類也被共享,這意味着這些類的單獨實例將共享不想要的值他們去。我顯然吮吸用詞語解釋,所以我寫了一些代碼。沒有實例共享變量的複合和層次結構
class First(object):
def __init__(self):
self.subvar1 = 0
self.subvar2 = 10
class Second(object):
variable3 = First()
class Third(Second):
def __init__(self):
self.variable4 = self.variable3.subvar2
Firstinstance = Third()
Secondinstance = Third()
Firstinstance.variable3.subvar1 = 50
Secondinstance.variable3.subvar2 = 0
print Firstinstance.variable3.subvar2 #<-prints 0 but i want 10
print Secondinstance.variable3.subvar1 #<-prints 50 but i want 0
除傾銷等級體系和寫一個大規模的集體,我可以防止合成後的類從具有自己的價值共享,有沒有爲我解決這個任何其他方式?
謝謝!解決了我的問題。有什麼缺點我應該知道嗎? (我什至不明白這是什麼) – Cestarian
@Cestarian:如果你不明白這個代碼,你真的應該去做一些關於Python的類和OO模型的教程。 –
我只是不明白它的超級部分。 我在尋找類的教程,他們的問題是,我發現的都不適合初學者。 – Cestarian