考慮下面的代碼片段,超和子類共享變量
class super1():
def __init__(self):
self.variable = ''
def setVariable(self, value):
self.variable = value
class child(super1):
def __init__(self):
super.__init__(self)
self.setSuperVariable()
def setSuperVariable(self):
# according to this variable should have value 10
self.setVariable(10)
super_instance = super1()
child1 = child()
print super_instance.variable
# prints nothing
super_instance.setVariable(20)
print super_instance.variable
,你可以看到,我有一個基類和派生類。我希望派生類設置可在程序外部使用的「變量」。例如,子類正在執行復雜任務並設置變量,該變量將被其他類和函數使用。
但是到現在爲止,由於子類具有自己的實例,因此它不會反映到範圍之外。
是否有解決此問題的方法?
@毛毛
class super():
def __init__(self):
self.variable = ''
def setVariable(self, value):
self.variable = value
class child():
def __init__(self, instance_of_super):
self.handle = instance_of_super
self.setSuperVariable()
def setSuperVariable(self):
# according to this variable should have value 10
self.handle.setVariable(10)
super_instance = super()
child1 = child(super_instance)
print super_instance.variable
# prints nothing
super_instance.setVariable(20)
print super_instance.variable
這將設置變量。雖然我不使用繼承。 :)
不要使用'super'作爲類名;它掩蓋了內置函數,它可以在重寫父類的方法時派上用場。 –
作爲@MartijnPieters,你剛剛通過屏蔽'super()'內建了大部分不可用的Python繼承。 – ElmoVanKielmo
我真的不明白你的問題是什麼。你永遠不會實例化'child',也不會調用'setSupetVariable',所以你不清楚你有什麼問題。如果你確實做了這些事情,那麼'child.variable'就是10. –