首页 > 解决方案 > 在 Python 中,如何清除作为另一个类列表的类属性?

问题描述

我有一个类,其中包含另一个类的实例列表。如何删除部件属性的内容,以便创建具有空部件属性的外部类的新实例?我不明白导致这种行为的原因是什么?

class MyOuterClass():

    parts = []

    def add_part(self, name):

        new_part = self.SubClass()
        new_part.name = name
        self.parts.append(new_part)

        return new_part

    class SubClass():

        name = ""

for n in range(1,4):

    c = MyOuterClass()
    c.add_part(str(n))

    print(c.parts)

    c.parts = []

    del c

    try:
        print(c)
    except Exception as e:
        print(e)

运行此代码表明它记住了以前的部分列表,即使我已经删除了外部类::

[<__main__.MyOuterClass.SubClass object at 0x101949c10>]
name 'c' is not defined
[<__main__.MyOuterClass.SubClass object at 0x101949c10>, <__main__.MyOuterClass.SubClass object at 0x101949a10>]
name 'c' is not defined
[<__main__.MyOuterClass.SubClass object at 0x101949c10>, <__main__.MyOuterClass.SubClass object at 0x101949a10>, <__main__.MyOuterClass.SubClass object at 0x101949dd0>]
name 'c' is not defined

标签: python

解决方案


推荐阅读