出于某种原因,我需要能够删除由类的某个方法产生的所有子级(在某种意义上)。举个例子:
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特定符号的解决方案。所有的解决方案将不胜感激。你知道吗
只需在返回新元素之前存储它,就可以对它执行任何操作—包括添加到子元素
至于
del
。。。请read what del actually does。最重要的部分是:所以如果你这样做的话
a2仍将工作并以相同的元素为目标(因为它持有与
a_class
相同的引用)。del
只是删除名称,而不是对象本身。你知道吗您需要一种不同的方法来删除这些元素。你知道吗
相关问题 更多 >
编程相关推荐