我在Python中遇到以下问题:
我有一个名为BasebookDataContainer
的类,主要是字典的集合。
在该类的方法中,我这样调用BasebookDataContainer
的新实例:
class BasebookDataContainer:
def generate_sub_basebook(self, columnlist):
....
newinstance = BasebookDataContainer()
发生很多奇怪的事情:
newinstance
自动加载了
类BasebookDataContainer
newinstance
的数据时,它也更改了
“自我”实例这是正常现象吗,有办法避免吗?
感谢您的回答。
答案 0 :(得分:0)
感谢大家的反馈。
其实我犯了一个错误:
在BasebookDataContainer类中,我直接在类定义本身中声明了一个包含字段列表(列表,字典,字符串等)的数据结构。
结果,当存在多个相同类对象的实例时,所有这些属性都存储在相同的内存地址中。这是我的错误,因为我有C ++背景。
正确的方法:
不要在类定义中声明结构字段(将值保留为None),不要在类的 init ()方法中分配内存。
现在,它可以完美运行。
经验教训。