Python字符串属性

Hel*_*nar 41 python attributes

我怎样才能完成这样的工作:

def get_foo(someobject, foostring):
    return someobject.foostring
Run Code Online (Sandbox Code Playgroud)

IE:

如果我这样做get_foo(obj, "name")应该是调用obj.name(请参阅输入字符串,但我称之为attritube.

谢谢

ada*_*amk 66

使用内置功能getattr.

getattr(object,name [,default ])

返回object的named属性的.name必须是一个字符串.如果字符串是对象属性之一的名称,则结果是该属性的值.例如,getattr(x, 'foobar')相当于x.foobar.如果named属性不存在,则返回default(如果提供),否则引发AttributeError.


Naz*_*san 31

如果someobject有一个名为foostringthen 的属性

def get_foo(someobject, foostring):
    return getattr(someobject,foostring)
Run Code Online (Sandbox Code Playgroud)

或者如果要为提供的对象设置属性,则:

def set_foo(someobject, foostring, value):
    return setattr(someobject,foostring, value)
Run Code Online (Sandbox Code Playgroud)

试试吧


Fro*_*aka 20

你应该使用setattr和getattr:

setattr(object,'property',value)
getattr(object,'property',default)
Run Code Online (Sandbox Code Playgroud)