Skip to main content
 首页 » 编程设计

Python 类共享变量给出了意外的输出

2025年05月04日15jirigala

基于对Shared Variables in Python Class的解释在这里,我希望以下代码的输出为:

123 123 
200 200 
300 300 

不过是

123 123 
200 123 
200 300 

代码:

class A: 
    abc = 123 
    def __init__(self, a,b,c): 
        self._a = a 
        self._b = b 
        self._c = c 
 
 
if __name__ == '__main__': 
    a = A(2, 4, 6) 
    b = A(3, 9, 27) 
 
    print a.abc , b.abc 
    a.abc = 200 
    print a.abc , b.abc 
    A.abc = 300 
    print a.abc , b.abc 

有人可以帮助理解这个吗?我的印象是共享变量与 C++ 类中的静态变量相同。打破这个神话的任何见解,如果是这样的话,也会有所帮助。

请您参考如下方法:

最初,类 A 有一个定义为 123 的 abc,a 和 b 都使用它,因为它们都没有 abc 他们自己的。

然后你执行a.abc = 200,它为a创建了一个abc; b 仍然使用 A 中的那个。

然后你执行 A.abc = 300,它更新 A 的 abc,b 仍然看起来,所以它看到了新的值(value)。但是 a 有自己的 abc,所以不关心。