我意识到自然而然地,没有get
方法的类就没有get
方法。在实现get
的类中添加__getitem__
方法的最佳方法是什么?
我尝试过:
class Foo():
def __getitem__(self, item):
...
get = dict.get # TypeError
但是python抱怨:
TypeError: descriptor 'get' for 'dict' objects doesn't apply to 'Foo' object
很显然可以使用collections.UserDict
,但我希望很懒惰(因为分辨率昂贵),并且直到访问(并通过Foo
对象上的键对其进行缓存才填充项目数据) )。
有想法吗?
答案 0 :(得分:0)
并非get方法过于复杂,我希望python具有内置函数来减少这种样板...
class Foo():
...
def get(self, item, default):
try:
return self[item]
except KeyError as err:
return default