Python类变量在对象之间共享吗?

2024-04-19 09:13:39 发布

您现在位置:Python中文网/ 问答频道 /正文

class cls():
    A = []

a = cls()
b = cls()
a.A.append("a")
print(b.A)

我在python3.4上运行这个。 但我看到它印了一个字母“a”

我不明白为什么会这样。a与b不同,但为什么它们共享一个var a


Tags: var字母classclsprintappend
1条回答
网友
1楼 · 发布于 2024-04-19 09:13:39

你已经给这个类分配了一个变量。它对于所有实例只存在一次(只要您通过引用使用它,而.append就是这样)

您真正需要的是一个实例变量:

class cls():
    def __init__(self):
        self.A = []

a = cls()
b = cls()
a.A.append("a")
print(b.A)

另外,cls不应该用作类的名称-使用CamelCase名称,另外cls应该只与元类或类方法一起使用(您不太可能需要这两种方法中的任何一种)

相关问题 更多 >