私はいくつかのメソッドコールバックを保存しようとしていますが、それを参照するとバインドされたオブジェクトが存続するので、メソッドへのweakrefを保持しようとしましたが、それは不可能のようですか?
それで
なぜ私は弱い参照を維持できないのですか?メソッドへ(以下の例を参照)
メソッドrefを保持するための最良の方法は何ですか?標準ライブラリに何かありますか?または、関数とオブジェクトの参照を保持する必要があります。分ける?
例:
import weakref
class A(object):
def m(self): pass
a = A()
import weakref
class A(object):
def m(self): pass
a = A()
rm = weakref.ref(a.m)
print "is weak ref to method dead?",rm() is None
print "Q1. why can't i keep weakref to bound method?"
ra = weakref.ref(a)
m = a.m
print "delete object"
del a
print "is object dead?",ra() is None
print "delete method"
del m
print "is object dead?",ra() is None
print "Q2. hmmm so i am stuck i can't keep a ref as it stops the object from gc, but weakref to method isn't working?"