オブジェクトへのすべての参照を一度に削除する方法はありますか?私はそれが不潔であることを知っているので、私は何をしようとしているのかを説明し、誰かがより良い方法を知っているかもしれない。オブジェクトとそのすべての参照をPythonで削除しますか?
私は、Cライブラリ用のSWIGラッパーの周りにオブジェクト指向のラッパーを作成しています。 Cオブジェクトのいずれかのプロキシが削除されると、(C言語で直接)子オブジェクトも削除されます。 Pythonでプロキシオブジェクトの削除をトリガーすることも欲しいです。さもなければ、私は状況に遭遇します。そこには、アクセスされた場合にsegfaultする無効なポインタを持ち歩く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?
が重複する可能性を( http://stackoverflow.com/questions/3013304/how-to-delete-every-reference-of-an-object-in-python) – agf
恐らく重複する質問:http://stackoverflow.com/questions/3013304/how -to-delete-in-object-in-pythonの参照 – Pinch
@Duc複製を見つけたらクローズするのに十分な担当者がいない場合は、それをリンクするだけでなく、複製としてフラグを立てることもできます。 – agf