当一个对象的属性名称中有冒号时,如何使用该属性?我遇到这种情况的代码是:
instances = nova.servers.list()
for i in instances:
print i.id, i.OS-EXT-SRV-ATTR:hypervisor_hostname
查看链接后Find All Elements Given Namespaced Attribute和 How do I escape a colon in Python format() when using kwargs? 我尝试使用 attr 作为
instances = nova.servers.list()
for i in instances:
print i.id, i.(attr={"OS-EXT-SRV-ATTR":"hypervisor_hostname"})
但它给出了无效语法的错误。我应该如何使用属性 OS-EXT-SRV-ATTR:hypervisor_hostname
最佳答案
不要使用具有此类名称属性的对象。使用字典。
可以设置和获取具有无效 Python 名称的属性:
Python 2.7.5+ (default, Sep 19 2013, 13:48:49)
>>> class A():
... pass
...
>>> a = A()
>>> setattr(a, 'OS-EXT-SRV-ATTR:hypervisor_hostname', 'some_string')
>>> a.OS-EXT-SRV-ATTR:hypervisor_hostname
File "<ipython-input-5-849986a021bc>", line 1
a.OS-EXT-SRV-ATTR:hypervisor_hostname
^
SyntaxError: invalid syntax
>>> getattr(a, 'OS-EXT-SRV-ATTR:hypervisor_hostname')
>>> 'some_string'
>>>
但不要这样做,使用字典来存储此信息,而不是对象的属性。
关于python - 如何使用项目名称中有冒号的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22803987/