python - 在 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
解决方案
推荐阅读
- java - 是否可以将 Kafka Streams Windowing 用于没有聚合运算符?
- rust - 创建一个拥有一些中间数据并指向它的迭代器的惯用方法是什么?
- apache-kafka - 将来自多个 kafka 的数据组合到单个 kafka
- python - Python 和 Kivy - 键盘 on_key_down 触发两次并且行为怪异
- python-3.x - 如何从导入的文件中操作 tkinter GUI
- flutter - Flutter:位置参数太多:预期为 0,但找到了 1。这里:AppBar(
- azure-active-directory - 请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配
- sql - 在 where 条件 (SQL) 中仅使用 DateTime 的年份部分
- c++ - 取消注释 cout 行如何改变最终答案?
- r - R - 从最后一个非零值开始依次填充 na 值