gpt4 book ai didi

python - 我怎样才能在 python 中创建一个死的 weakref?

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:44 28 4
gpt4 key购买 nike

有没有比以下更好的方法:

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

最佳答案

另一种方法是在此处使用鸭子类型。如果您只关心它在 self._ref() 调用方面表现得像死的弱引用,那么您可以这样做

self._ref = lambda : None

当我有一个类似的愿望时,我最终使用的是一个属性,如果它可用,它会返回一个缓存值,否则就不会返回。我用这个 lambda 函数初始化了它。然后属性是

@property
def ref(self):
return self._ref()

更新:归功于@Aran-Fey,我看到他将这个想法发布为对问题的评论,而不是作为答案。

关于python - 我怎样才能在 python 中创建一个死的 weakref?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51991974/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com