python - 如何使用项目名称中有冒号的属性

标签 python attributes

当一个对象的属性名称中有冒号时,如何使用该属性?我遇到这种情况的代码是:

instances = nova.servers.list()
for i in instances:
        print i.id, i.OS-EXT-SRV-ATTR:hypervisor_hostname

查看链接后Find All Elements Given Namespaced AttributeHow 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"})

但它给出了无效语法的错误。我应该如何使用属性 O​​S-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/

相关文章:

python - 无法在 virtualenv 中安装 mysql-connector-python

asp.net-mvc-3 - 如何让 MVC3 DisplayFor 显示枚举的 Display-Attribute 的值?

python - 在 django admin 中有条件地注销或注册模型

ruby - Sum 2 具有相同键的散列属性

ruby-on-rails - Ruby on rails,多次检查 nil 属性

class - D 成员函数属性

html - 从 Iframe 中获取 Iframe 的属性

python - Django 中的 ModelForms 与 ManyToMany 关系模型

python - Rethinkdb:从查询中返回多个对象

python - Gruber 的 Python URL 正则表达式