使变量对所有子类都通用

时间:2019-06-10 05:14:25

标签: python

我想要一个带有变量temp的类a,以及它的两个子类c1c2。如果在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,但这给了我一个错误。我怎样才能达到期望的目标?谢谢...

1 个答案:

答案 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