Python 当字段名位于变量中时,如何访问类的字段?

Python 当字段名位于变量中时,如何访问类的字段?,python,string,python-2.7,Python,String,Python 2.7,如果我将对象字段的名称存储在变量中,在本例中为var,我如何访问对象中的该字段?我想我应该使用%s,但我不知道如何构造语法 class object: name = "object_name" var = "name" print object."%s" % var #causes error 我希望它打印“object\u name”,但它导致语法错误 使用: 您可以使用getattr: getattr(object, var) 无论如何,只是一个附加注释,说明您没有引用对象变量

如果我将对象字段的名称存储在变量中,在本例中为var,我如何访问对象中的该字段?我想我应该使用%s,但我不知道如何构造语法

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

print object."%s" % var #causes error
我希望它打印
“object\u 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
(顺便说一下,这些被称为属性而不是字段)。它将在类级别和实例级别工作,如下所示

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

注意:最好不要将类命名为
对象
,因为这是对内置对象的阴影

我想你的帖子上需要一个
s/object/instance/g
。类是对象。
>>> class Foo:
...     attr = 'potato'
...     
>>> getattr(Foo, 'attr')
'potato'
>>> getattr(Foo(), 'attr')
'potato'