python - 为什么我的 Python 实例被共享?

标签 python

我的代码:

class Num:

    nums = []

    def add(self, num):
        self.nums.append(num)

    def __str__(self):
        return  str(self.nums)

a = Num()
b = Num()
a.add(5)
print str(a)
print str(b)

产生

[5]
[5]

即使什么都没有添加到b

最佳答案

因为 nums 是类属性而不是实例属性。

class Num:

    def __init__(self):
        self.nums = []

    def add(self, num):
        self.nums.append(num)

    def __str__(self):
        return  str(self.nums)

像这样实现它会显示您期望的行为。

关于python - 为什么我的 Python 实例被共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16836347/

相关文章:

python - 为什么我不能使用TWARC/Hydrator 应用程序对24000个推文ID中的18个以上的推文进行补水?有谁知道更好的方法吗?

python - 关于QPixmap更改不透明度

python - OpenCV 在 OS X 上比在 Linux 上更准确

python - python对象的sqlalchemy from_statement动态属性

python - 在函数之外使用变量

python - Python 中的 Namedtuple 格式化/ pretty-print

python - 如何替换 python/mysql 中的列表

python - 将 subprocess.Popen 的标准输出逐行保存到文件

具有自定义元类行为的 Python 元类

python - 使用 qt 将绘图添加到选项卡