Строка Python для атрибута
Как я могу достичь такой работы:
def get_foo(someobject, foostring):
return someobject.foostring
IE:
если я делаю get_foo(obj, "name")
, он должен вызывать obj.name
(см. ввод как строку, но я называю это attritube.
Спасибо
Ответы
Ответ 1
Используйте встроенную функцию getattr
.
getattr (объект, имя [, по умолчанию])
Возвращает значение именованного атрибута объекта. имя должно быть строкой. Если строка является именем одного из атрибутов объектов, результатом будет значение этого атрибута. Например, getattr(x, 'foobar')
эквивалентно x.foobar
. Если именованный атрибут не существует, значение по умолчанию возвращается, если предусмотрено, в противном случае AttributeError будет поднят.
Ответ 2
Если someobject
имеет атрибут с именем foostring
, то
def get_foo(someobject, foostring):
return getattr(someobject,foostring)
или если вы хотите установить атрибут предоставленному объекту, то:
def set_foo(someobject, foostring, value):
return setattr(someobject,foostring, value)
Попробуйте
Ответ 3
Вы должны использовать setattr и getattr:
setattr(object,'property',value)
getattr(object,'property',default)