使用键作为方法访问字典 (getter & setter) 调用语法

access dict with key as method (getter & setter) invocation syntax

在Python,

有没有一种方法可以像在对象上调用方法那样访问字典。场景是,我想创建一个只有属性的 class,没有方法。我发现很少有人讨论这种情况 Python: Should I use a class or dictionary?。我决定选择 dict 而不是 class

不,我只是想了解,有没有一种方法可以访问 dict 的元素,类似于对对象的方法调用?

mydict = {'a': 100, 'b': 20.5, 'c': 'Hello'}

而不是

mydict['a']
mydict['a'] = 200

有点像,

mydict.a
mydict.a = 200

namedtuple确实解决了一部分,就是我可以初始化读取。但不拟set/write值。

这很容易通过在子类中实现 __getattr____setattr__ 来完成:

class MyDict(dict):
    def __getattr__(self, attr):
        return self[attr]
    def __setattr__(self, attr, value):
        self[attr] = value