您可以使用setdefault
块来代替使用try/except
,或者我个人更希望直接覆盖__getitem__
:
import weakref
class MyBigFancyClass:
pass
class MyWeakValueDictionary(weakref.WeakValueDictionary):
def __getitem__(self,item):
try:
return super().__getitem__(item)
except KeyError:
value = self[item] = MyBigFancyClass()
return value
my_dict = MyWeakValueDictionary()
value = my_dict['my-key']
,
您可以避免setdefault
,并使用KeyError
import weakref
my_dict = weakref.WeakValueDictionary()
# ...
try:
value = my_dict['my-key']
except KeyError:
value = MyBigFancyClass()
my_dict['my-key'] = value
本文链接:https://www.f2er.com/2677915.html