Aze*_*ila 6 python attributes dictionary properties
我正在寻找的是有这样的东西:
self.info['key'].attr2
Run Code Online (Sandbox Code Playgroud)
但我不确定实现它的最优雅的方式是什么。到目前为止,我已经定义了一个像下面这样的字典,但没有它的属性。
self.info = {}
self.info.update({'key':
{'attr1': 2,
'attr2': lambda: self.func(arg1)}
})
Run Code Online (Sandbox Code Playgroud)
但是我将不得不像这样使用它:
self.info['key']['attr2']()
Run Code Online (Sandbox Code Playgroud)
请注意,我正在寻找的是访问字典值(如属性)。这个线程有一个可以在我的情况下使用的答案,也可能是我从上面的子字典中创建一个对象并将其作为主字典的值。
但我想知道是否有更好的方法,也许使用装饰器和更少的代码行,甚至可能不使用字典来做我在第一行中描述的事情,也许更好:
self['key'].attr2
Run Code Online (Sandbox Code Playgroud)
这是一个简短的包装器,用于将字典键作为属性访问:
class nameddict(dict):
__getattr__ = dict.__getitem__
info = nameddict()
info['key'] = nameddict(attr1=2, attr2=3)
Run Code Online (Sandbox Code Playgroud)
然后info['key'].attr2以及info['key']['attr2']和info.key.attr2返回3。
| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |