带有'__getitem__'的类没有'get'方法

时间:2019-04-25 22:07:14

标签: python python-datamodel

我意识到自然而然地,没有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对象上的键对其进行缓存才填充项目数据) )。

有想法吗?

1 个答案:

答案 0 :(得分:0)

并非get方法过于复杂,我希望python具有内置函数来减少这种样板...

class Foo():
    ...
    def get(self, item, default):
        try:
            return self[item]
        except KeyError as err:
            return default