如何在Python中使用点表示法表示字典?

2023-11-27

我对 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(使用前将#替换为@)

如何在Python中使用点表示法表示字典? 的相关文章

随机推荐