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



我意识到没有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

相关内容

  • 没有找到相关文章

最新更新