如何使Python字典成员可通过点".“访问?
例如,我想编写mydict.val,而不是编写mydict['val']。
另外,我想以这种方式访问嵌套的字典。例如
mydict.mydict2.val 将会引用
mydict = { 'mydict2': { 'val': ... } }发布于 2016-12-22 10:29:08
Fabric有一个非常好的,最小的implementation。将其扩展为允许嵌套访问,我们可以使用defaultdict,结果如下所示:
from collections import defaultdict
class AttributeDict(defaultdict):
def __init__(self):
super(AttributeDict, self).__init__(AttributeDict)
def __getattr__(self, key):
try:
return self[key]
except KeyError:
raise AttributeError(key)
def __setattr__(self, key, value):
self[key] = value如下所示使用它:
keys = AttributeDict()
keys.abc.xyz.x = 123
keys.abc.xyz.a.b.c = 234这对库格尔的回答“从字典派生并实现__getattr__和__setattr____”进行了一点阐述。现在你知道该怎么做了!
https://stackoverflow.com/questions/2352181
复制相似问题