有没有比这种做法更好的方法:
def create_expired_weakref():
class Tmp: pass
ref = weakref.ref(Tmp())
assert ref() is None
return ref
背景:我希望在我的弱引用(weakref)中设置默认状态,以便我的类可以执行以下操作:
def __init__(self):
self._ref = create_expired_weakref()
def get_thing(self):
r = self._ref() # I need an empty weakref for this to work the first time
if r is None:
r = SomethingExpensive()
self._ref = weakref.ref(r)
return r
weakref.ref
对象吗?如果您不关心类型,可以将lambda: None
用作默认值。 - Aran-Feytype(None)
。 - wim