我意识到没有get
方法的类自然没有get
方法。将 get
方法添加到实现 __getitem__
[没有样板] 的类的最佳方法是什么?
我试过了:
class Foo():
def __getitem__(self, item):
...
get = dict.get # TypeError
但蟒蛇抱怨:
TypeError: descriptor 'get' for 'dict' objects doesn't apply to 'Foo' object
显然,可以使用collections.UserDict
,但我希望懒惰(因为分辨率昂贵(并且在访问项目数据之前不填充项目数据(并通过Foo
对象上的键缓存(。
思潮?
并不是说 get 方法过于复杂,我希望 python 有内置的东西来减少这种样板......
class Foo():
...
def get(self, item, default):
try:
return self[item]
except KeyError as err:
return default