小编Sou*_*wal的帖子

Python 继承中共享类变量

我对Python继承中的变量共享概念感到困惑。

考虑以下代码:-

class a(object):
    var1 = 0
    var2 = {}
    def print_var(self):
        print(self.var1)
        print(self.var2)

class b(a):
    @classmethod
    def modify_var(cls):
        cls.var1 = 1
        cls.var2['temp']="something"

o1 = a()
o2 = b()
print("Initial Values")
o1.print_var()
o2.print_var()
print("Changing Values")
o2.modify_var()
print("Print values after change")
o1.print_var()
o2.print_var()
Run Code Online (Sandbox Code Playgroud)

运行上面的代码后,我可以看到字典在子类和父类之间共享,但整数变量不是。

谁能解释一下这个,或者我在这里做错了什么?

上述代码的输出:

Initial Values
0
{}
0
{}
Changing Values
Print values after change
0    # <- this zero should be one according to my understanding
{'temp': 'something'}
1
{'temp': 'something'}
Run Code Online (Sandbox Code Playgroud)

python inheritance

5
推荐指数
1
解决办法
2576
查看次数

标签 统计

inheritance ×1

python ×1