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

2024-04-25 16:51:58 发布

您现在位置: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特定符号的解决方案。所有的解决方案将不胜感激。你知道吗


Tags: 方法selfinitdefval解决方案cythonlist
1条回答
网友
1楼 · 发布于 2024-04-25 16:51:58

What I want is somehow to append generated class B from gen_b to A().children

只需在返回新元素之前存储它,就可以对它执行任何操作—包括添加到子元素

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

至于del。。。请read what del actually does。最重要的部分是:

Deletion of a name removes the binding of that name

所以如果你这样做的话

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

a2仍将工作并以相同的元素为目标(因为它持有与a_class相同的引用)。del只是删除名称,而不是对象本身。你知道吗

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

相关问题 更多 >