2014-04-02 59 views
2

當對象屬性的名稱中含有冒號時,如何使用屬性?在那裏我碰到這種形勢下應運而生的代碼是:如何使用在ite名稱中冒號的屬性

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"}) 

但它給錯誤的語法無效。我應該如何使用屬性OS-EXT-SRV-ATTR:hypervisor_hostname

+0

你怎麼能夠__set__具有這樣的名字的屬性? – warvariuc

+0

我很感興趣,爲什麼你想這樣做。 – ebarr

回答

1

請勿使用具有此類名稱的屬性的對象。使用字典。

這是可能的設置和無效的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' 

>>> 

但不這樣做,用字典來存儲這些信息,而不是對象的屬性。

+0

感謝您的回答。我用字典。 – Veena

相關問題