how can I access attributes that have the same name as reserved keywords?
我调用的API返回的AttributeDict具有多个属性,如to和from。
为了访问这些属性,我使用点表示法。例如,我使用object.to,效果很好。
当我试图使用object.from时,我得到一个错误,上面写着SyntaxError: invalid syntax。我认为这是因为from是python中的关键字。
如果是这种情况,是否可以使用点访问from?目前,我使用的是object["from"],它正在工作,但与我的其他代码不匹配。
- 这就是为什么AttributeDict通常是个坏主意。他们在抹黑"数据"和"代码"之间的界限。
- 实例和类属性与变量遵循相同的命名约定。在某种意义上,变量是模块的属性。
虽然可以使用getattr访问这些属性:
1
| val = getattr(ad, 'from') |
这比您的attributedict支持的ad['from']语法更麻烦,并且不能满足您对点符号的需求。
目前没有使用点标记访问这些属性的选项。只需坚持索引。它处理保留名称、其中包含空格/连字符的名称,以及与现有方法相冲突的名称(假设实现了合理的attributedict)。即使使用getattr,getattr(ad, 'get')仍可能返回attributedict的get方法,而不是'get'键的值。
- 通常建议在程序中的任何地方使用索引吗?
- @python-crypto-questions不建议首先给出与关键字同名的属性。建议只使用obj.attribute语法。