python - 子类名称是一个数字
问题描述
我可以使用 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”作为条目之一。这怎么可能?有没有办法访问这个索引?
解决方案
推荐阅读
- or-tools - Google ORTools - 不能共享相同路由的节点
- python - 如果我只传递一个参数,为什么会得到 TypeError?
- core-data - SwiftUI:Core Data @FetchRequest 和 List 显示托管对象 - 在 lockscreemn 上丢失数据
- sql - 为什么此选择不选择任何行
- java - 如何使用java在mysql中插入枚举列类型
- zsh - Zsh 随时间更新提示
- azure - Azure SignalR 协商失败
- node.js - Axios 只为程序中的一个函数返回 HTML 而不是 JSON
- python - Python:分析股价在股票图表中被交叉的次数
- python - ValueError:权重不能广播到值。值.rank=3。权重.rank=1。values.shape=(?, 7, 7)。weights.shape=(?,)