gpt4 book ai didi

python - 如何在python中为dict使用点符号?

转载 作者:IT老高 更新时间:2023-10-28 20:37:17 24 4
gpt4 key购买 nike

我对 python 很陌生,我希望我可以使用 . 表示法来访问 dict 的值。

假设我有这样的 test:

>>> test = dict()
>>> test['name'] = 'value'
>>> print(test['name'])
value

但我希望我可以通过 test.name 来获取 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'

为什么会这样?

最佳答案

这个功能已经exists in the standard libraries ,所以我建议您只使用他们的类(class)。

>>> from types import SimpleNamespace
>>> d = {'key1': 'value1', 'key2': 'value2'}
>>> n = SimpleNamespace(**d)
>>> print(n)
namespace(key1='value1', key2='value2')
>>> n.key2
'value2'

添加、修改和删除值是通过常规属性访问实现的,即您可以使用像 n.key = valdel n.key 这样的语句。

再次回到字典:

>>> vars(n)
{'key1': 'value1', 'key2': 'value2'}

你的字典中的键应该是字符串 identifiers属性访问正常工作。

简单命名空间是在 Python 3.3 中添加的。对于旧版本的语言,argparse.Namespace有类似的行为。

关于python - 如何在python中为dict使用点符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16279212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com