当名称是保留关键字时访问 class 的属性 - Python
Access to an attribute of a class when the name is a reserved keyword- Python
我有一个来自 API 调用 (JSON) 的“项目”对象 (),如下所示:
{
"id": 1,
"type": 10,
"via": {
"from":{
"id": "511",
"name": "a"
},
"to":{
"id": "999",
"name": "b"
}
}
}
所以,当我这样做时
print(item.via.to['id'])
它工作正常,但是当我尝试这样做时:
print(item.via.from['id'])
我收到错误语法错误:“来自”的语法无效。因为是保留关键字。
如何访问该值?我无法更改“发件人”名称,因为它来自 API 电话。
谢谢。
查看您正在引用的 API 的代码,它看起来像是保留字,它们的 类 的约定是在其前面加上前导 _
(looking here)
所以请尝试使用 item.via._from
,_from 是一个有效的标识符。
也可能最好在对象上调用 to_dict
甚至实际的较低级别 __dict__
并通过字符串访问它,但我认为第一个应该有效:
x = item.via._from.id
x = item.to_dict()["via"]["from"]["id"]
# or worst case…
x = item.via.__dict__["from"].id
我有一个来自 API 调用 (JSON) 的“项目”对象 (
{
"id": 1,
"type": 10,
"via": {
"from":{
"id": "511",
"name": "a"
},
"to":{
"id": "999",
"name": "b"
}
}
}
所以,当我这样做时
print(item.via.to['id'])
它工作正常,但是当我尝试这样做时:
print(item.via.from['id'])
我收到错误语法错误:“来自”的语法无效。因为是保留关键字。
如何访问该值?我无法更改“发件人”名称,因为它来自 API 电话。
谢谢。
查看您正在引用的 API 的代码,它看起来像是保留字,它们的 类 的约定是在其前面加上前导 _
(looking here)
所以请尝试使用 item.via._from
,_from 是一个有效的标识符。
也可能最好在对象上调用 to_dict
甚至实际的较低级别 __dict__
并通过字符串访问它,但我认为第一个应该有效:
x = item.via._from.id
x = item.to_dict()["via"]["from"]["id"]
# or worst case…
x = item.via.__dict__["from"].id