有没有办法一次删除对对象的所有引用?我知道那是不合情理的,所以我会解释我正在尝试做的事情,也许有人知道更好的方法。
我正在为 C 库的 SWIG 包装器编写面向对象的包装器。当删除 C 对象之一的代理时,它也会删除子对象(直接在 C 中)。我希望这也能触发在 Python 中删除他们的代理对象。否则我会遇到一种情况,即 Python 对象携带无效指针,如果它们被访问,则会出现段错误。
它看起来像这样:
class Parent(object):
def __init__(self):
self.ptr = swig.createParent()
def __del__(self):
swig.deleteParent(self.ptr) # also deletes children
class Child(object):
def __init__(self, parent):
self.ptr = swig.createChild(parent)
def __del__(self):
swig.deleteChild(self.ptr)
这就是我担心的情况:
p = Parent()
c = Child(parent)
del p
# accessing c.ptr now would be bad right?