如果我有一個對象的字段名稱存儲在一個變量,在這種情況下var,我如何訪問該對象的字段?我假設我應該使用%s,但我不知道如何構造語法。當字段名稱在變量中時,如何訪問類的字段?
class object:
name = "object_name"
var = "name"
print object."%s" % var #causes error
我希望它打印"object_name"
但它會導致語法錯誤。
如果我有一個對象的字段名稱存儲在一個變量,在這種情況下var,我如何訪問該對象的字段?我假設我應該使用%s,但我不知道如何構造語法。當字段名稱在變量中時,如何訪問類的字段?
class object:
name = "object_name"
var = "name"
print object."%s" % var #causes error
我希望它打印"object_name"
但它會導致語法錯誤。
您使用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對象,它的工作方式相同。
使用getattr:
getattr(myobject, var)
你想getattr
(順便說一句,這些被稱爲屬性不是字段)。它將在課堂級別和實例級別工作,如下所示。
>>> class Foo:
... attr = 'potato'
...
>>> getattr(Foo, 'attr')
'potato'
>>> getattr(Foo(), 'attr')
'potato'
注:最好不要命名您的object
類,你遮蔽一個內置。
我認爲你需要在你的文章中使用's/object/instance/g'。類是對象。 – roippi