Подтвердить что ты не робот

Строка Python для атрибута

Как я могу достичь такой работы:

def get_foo(someobject, foostring):
    return someobject.foostring

IE:

если я делаю get_foo(obj, "name"), он должен вызывать obj.name (см. ввод как строку, но я называю это attritube.

Спасибо

4b9b3361

Ответ 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)