Python:如何在类的方法内调用类的新实例

时间:2018-11-28 12:33:44

标签: python methods instance self

我在Python中遇到以下问题:

我有一个名为BasebookDataContainer的类,主要是字典的集合。

在该类的方法中,我这样调用BasebookDataContainer的新实例:

class BasebookDataContainer:  
    def generate_sub_basebook(self, columnlist):  
       ....  
       newinstance = BasebookDataContainer()

发生很多奇怪的事情:

  1. newinstance自动加载了 类BasebookDataContainer
  2. 的“ self”实例
  3. 当我更改newinstance的数据时,它也更改了 “自我”实例

这是正常现象吗,有办法避免吗?

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

感谢大家的反馈。
其实我犯了一个错误:
在BasebookDataContainer类中,我直接在类定义本身中声明了一个包含字段列表(列表,字典,字符串等)的数据结构。 结果,当存在多个相同类对象的实例时,所有这些属性都存储在相同的内存地址中。这是我的错误,因为我有C ++背景。
正确的方法:
不要在类定义中声明结构字段(将值保留为None),不要在类的 init ()方法中分配内存。 现在,它可以完美运行。 经验教训。