我想要一个带有变量temp
的类a
,以及它的两个子类c1
和c2
。如果在a
中更改了c1
,则它也应反映在c2
中,反之亦然。为此,我尝试了:
class temp(ABC):
a=1
def f(self):
pass
class c1(temp):
def f(self):
print(self.a)
class c2(temp):
def f(self):
print(self.a)
o1=c1()
o2=c2()
o1.f()
o2.f()
o1.a+=1
o1.f()
o2.f()
它给我输出:
1
1
2
1
我希望它是
1
1
2
2
我也尝试使用super.a
而不是self.a
,但这给了我一个错误。我怎样才能达到期望的目标?谢谢...
答案 0 :(得分:2)
您需要增加静态变量本身,而不是增加o1.a
。
即temp.a += 1
class temp():
a=1
def f(self):
pass
class c1(temp):
def f(self):
print(self.a)
class c2(temp):
def f(self):
print(self.a)
o1=c1()
o2=c2()
o1.f()
o2.f()
temp.a+=1
o1.f()
o2.f()
>>> 1
1
2
2