【发布时间】:2020-10-31 03:22:43
【问题描述】:
我怎样才能完成这样的工作:
def get_foo(someobject, foostring):
return someobject.foostring
IE:
如果我这样做get_foo(obj, "name"),它应该调用obj.name(将输入视为字符串,但我将其称为属性。
谢谢
【问题讨论】:
标签: python attributes
我怎样才能完成这样的工作:
def get_foo(someobject, foostring):
return someobject.foostring
IE:
如果我这样做get_foo(obj, "name"),它应该调用obj.name(将输入视为字符串,但我将其称为属性。
谢谢
【问题讨论】:
标签: python attributes
使用内置函数getattr。
getattr(object, name[, default])
返回object的命名属性的值。 name 必须是字符串。如果字符串是对象属性之一的名称,则结果是该属性的值。例如,
getattr(x, 'foobar')等价于x.foobar。如果命名属性不存在,则返回 default(如果提供),否则会引发 AttributeError。
【讨论】:
如果someobject 有一个名为foostring 的属性,那么
def get_foo(someobject, foostring):
return getattr(someobject,foostring)
或者如果你想为提供的对象设置一个属性,那么:
def set_foo(someobject, foostring, value):
return setattr(someobject,foostring, value)
试试看
【讨论】:
你应该使用 setattr 和 getattr:
setattr(object,'property',value)
getattr(object,'property',default)
【讨论】: