当字段名称在变量中时,如何访问类的字段?

时间:2014-01-30 20:54:04

标签: python string python-2.7

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

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

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

我希望它能够打印"object_name",但这会导致语法错误。

3 个答案:

答案 0 :(得分:4)

你使用getattr:

getattr(object, var)

无论如何,只是您没有引用 object 变量的附加注释,您正在引用实例变量。如果你想要一个实例变量,你需要做这样的事情:

# 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 :(得分:3)

使用getattr

getattr(myobject, var)

答案 2 :(得分:2)

您想要getattr(顺便说一下,这些被称为属性而不是字段)。它将在类级别和实例级别工作,如下所示。

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

注意:最好不要为您的班级object命名,而是隐藏内置版本。