2014-01-30 64 views
2

如果我有一個對象的字段名稱存儲在一個變量,在這種情況下var,我如何訪問該對象的字段?我假設我應該使用%s,但我不知道如何構造語法。當字段名稱在變量中時,如何訪問類的字段?

class object: 
    name = "object_name" 
var = "name" 

print object."%s" % var #causes error 

我希望它打印"object_name"但它會導致語法錯誤。

回答

4

您使用GETATTR:

getattr(object, var) 

不管怎麼說,只是你沒有引用對象變量額外的評論,您引用實例變量。如果你想要一個實例變量,你需要做的是這樣的:

# Note: object is reserved, it's the built-in base class for new-style classes 
class MyObject: 
    def __init__(self): 
     self.name = 'name' 

myobj = MyObject() 
getattr(myobj, 'name') 

但GETATTR不關心 - 類或實例,他們都是Python對象,它的工作方式相同。

+1

我認爲你需要在你的文章中使用's/object/instance/g'。類是對象。 – roippi

2

你想getattr(順便說一句,這些被稱爲屬性不是字段)。它將在課堂級別和實例級別工作,如下所示。

>>> class Foo: 
...  attr = 'potato' 
...  
>>> getattr(Foo, 'attr') 
'potato' 
>>> getattr(Foo(), 'attr') 
'potato' 

注:最好不要命名您的object類,你遮蔽一個內置。

相關問題