python - 该类的两个不同实例在内存中具有相同的列表地址

标签 python list class memory

我有以下代码:

class PWA_Parse():
    include = []

    def appendInclude(self, element):
        self.include.append(element)

    def printMemory(self):
        print "Class location", hex(id(self)), "List location:", hex(id(self.include))

a = PWA_Parse()
b = PWA_Parse()

a.appendInclude(5)

a.printMemory()
b.printMemory()

两者的列表内存地址相同:

Class location 0x29e9788 List location: 0x29e95d0    
Class location 0x29e97b0 List location: 0x29e95d0

如何在类定义中创建一个列表,以便在实例化时获得两个单独的列表? (提示:我已经尝试过使用 list() 了)

最佳答案

通过将 include 声明为类变量,您可以使该类的所有实例共享相同的变量 include

相反,您应该通过在 __init__() 方法中初始化它来使 include 成为一个实例变量:

class PWA_Parse():
    def __init__(self):
        self.include = []

关于python - 该类的两个不同实例在内存中具有相同的列表地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51625775/

相关文章:

python - 更好的命令行解析 python

python:查找字符串中的第一个字符串

c++ - 关于 C++ 中的列表

Jquery滚动顶部触发两点之间的函数?

python - 如何将 python 对象从一个文件模块传递到另一个文件模块?

python - 有没有办法在 Python 中编写脚本来更改 Linux 中的用户密码?如果是这样,如何?

python对自定义排序的元组列表进行排序

java - 如何最有效地将列表内容复制到另一个列表

java - 检查 boolean 值是否已在 Java 中更改

c++ - 模仿int数据类型?