2024-04-19 09:13:39 发布
网友
class cls(): A = [] a = cls() b = cls() a.A.append("a") print(b.A)
我在python3.4上运行这个。 但我看到它印了一个字母“a”
我不明白为什么会这样。a与b不同,但为什么它们共享一个var a
你已经给这个类分配了一个变量。它对于所有实例只存在一次(只要您通过引用使用它,而.append就是这样)
.append
您真正需要的是一个实例变量:
class cls(): def __init__(self): self.A = [] a = cls() b = cls() a.A.append("a") print(b.A)
另外,cls不应该用作类的名称-使用CamelCase名称,另外cls应该只与元类或类方法一起使用(您不太可能需要这两种方法中的任何一种)
cls
CamelCase
你已经给这个类分配了一个变量。它对于所有实例只存在一次(只要您通过引用使用它,而
.append
就是这样)您真正需要的是一个实例变量:
另外,
cls
不应该用作类的名称-使用CamelCase
名称,另外cls
应该只与元类或类方法一起使用(您不太可能需要这两种方法中的任何一种)相关问题 更多 >
编程相关推荐