Python 字符串转属性
我想实现这样的功能:
def get_foo(someobject, foostring):
return someobject.foostring
举个例子:
如果我执行 get_foo(obj, "name")
,那么它应该返回 obj.name
的值(虽然输入是一个字符串,但我希望它能像访问属性一样调用)。
谢谢!
3 个回答
37
你应该使用 setattr 和 getattr:
setattr(object,'property',value)
getattr(object,'property',default)
54
如果someobject
这个对象有一个叫做foostring
的属性,那么
def get_foo(someobject, foostring):
return getattr(someobject,foostring)
或者如果你想把一个属性设置到这个对象上,那么:
def set_foo(someobject, foostring, value):
return setattr(someobject,foostring, value)
试试看
125
使用内置的函数 getattr
。
getattr(对象, 属性名[, 默认值])
这个函数可以用来获取一个对象的指定属性的值。属性名必须是一个字符串。如果这个字符串是对象某个属性的名字,返回的就是这个属性的值。比如,
getattr(x, 'foobar')
就相当于x.foobar
。如果你请求的属性不存在,且你提供了默认值,那么就返回这个默认值;如果没有提供默认值,就会出现一个叫 AttributeError 的错误。