基于对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
,所以不关心。
关于Python 类共享变量给出了意外的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39234297/