删除类方法 python 生成的所有变量(类)



出于某种原因,我需要能够删除所有由类的某种方法产生的子项(在某种意义上(。下面是一个示例:

class A():
def __init__(self):
self.a_val = 56
self.children = list()
def __del__(self):
del self.children
def gen_b(self):
return B(self.a_val)
class B():
def __init__(self, val):
self.a_val = val
self.b_val = 87

我想要的是以某种方式将生成的类 B 从gen_b附加到A().children,以便:

a_class = A()
b_generated = a_class.gen_b()
del a_class
# b_generated is also deleted

此外,我需要这个用于cython(我使用cdef类(,所以也许有一些解决方案与__dealloc__或其他Cython特定的符号。所有解决方案都将不胜感激。

我想要的是以某种方式将生成的类 B 从 gen_b 附加到 A((.children

只需在返回新元素之前存储它,您就可以对它做任何您想做的事情 - 包括添加到子元素

def gen_b(self):
b = B(self.a_val)
self.children.append(b)
return b

至于del...请阅读 del 的实际工作。最重要的部分是:

删除名称

会删除该名称的绑定

因此,如果您这样做,例如

>>> a_class = A()
>>> a2 = a_class
>>> del a_class

A2 仍然会工作并针对相同的元素(因为它拥有与a_class相同的引用(。del只是删除名称,而不是对象本身。

您需要一种不同的方法来删除这些元素。

最新更新