首页 > 解决方案 > 子类名称是一个数字

问题描述

我可以使用 SimpleNamespace 将字典转换为对象:

>>> a = {"foo": 1, "bar": 2}
>>> b = SimpleNamespace(**a)
>>> b.foo
1
>>> b.bar
2

这是伟大的。但是,如果字典中的一个键是数字,我会遇到一个奇怪的问题:

>>> a = {"foo": 3, "1": "hello"}
>>> b = SimpleNamespace(**a)
>>> b.foo
3
>>> b.1
Syntax Error

这是有道理的,因为变量名不能以数字开头。但是,如果我运行:

>>> dir(b)
['1', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'foo']

它仍然显示“1”作为条目之一。这怎么可能?有没有办法访问这个索引?

标签: pythonpython-3.xobjectattributes

解决方案


推荐阅读