我对 python 很陌生,我希望我能做到.
访问 a 值的表示法dict
.
可以说我有test
像这样:
>>> test = dict()
>>> test['name'] = 'value'
>>> print(test['name'])
value
但我希望我能做到test.name
to get value
。事实上我是通过覆盖来做到的__getattr__
我的类中的方法如下:
class JuspayObject:
def __init__(self,response):
self.__dict__['_response'] = response
def __getattr__(self,key):
try:
return self._response[key]
except KeyError,err:
sys.stderr.write('Sorry no key matches')
这有效!当我做:
test.name // I get value.
但问题是当我打印时test
单独我得到的错误为:
'Sorry no key matches'
为什么会发生这种情况?
已经有这个功能了存在于标准库中,所以我建议你只使用他们的课程。
>>> from types import SimpleNamespace
>>> d = {'key1': 'value1', 'key2': 'value2'}
>>> n = SimpleNamespace(**d)
>>> print(n)
namespace(key1='value1', key2='value2')
>>> n.key2
'value2'
添加、修改和删除值是通过常规属性访问来实现的,即您可以使用类似的语句n.key = val
and del n.key
.
再次回到字典:
>>> vars(n)
{'key1': 'value1', 'key2': 'value2'}
你的字典中的键应该是字符串身份标识属性访问正常工作。
Python 3.3 中添加了简单命名空间。对于该语言的旧版本,argparse.Namespace有类似的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)