-1

我意识到一个没有方法的类自然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对象上的键缓存)之前不填充项目数据。

想法?

4

1 回答 1

0

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

class Foo():
    ...
    def get(self, item, default):
        try:
            return self[item]
        except KeyError as err:
            return default
于 2019-04-25T22:16:51.523 回答