Как получить доступ к атрибуту объекта по заданной строке, соответствующей имени этого атрибута - PullRequest
108 голосов
/ 10 апреля 2010

Как установить / получить значения атрибутов t, заданных x?

class Test:
   def __init__(self):
       self.attr1 = 1
       self.attr2 = 2

t = Test()
x = "attr1"

Ответы [ 2 ]

216 голосов
/ 10 апреля 2010

Есть встроенные функции, называемые getattr и setattr

getattr(object, attrname)
setattr(object, attrname, value)

В этом случае

x = getattr(t, 'attr1')
setattr(t, 'attr1', 21)
2 голосов
/ 10 апреля 2010

Примечание. Этот ответ очень устарел. Это относится к Python 2 с использованием модуля new, который был устарел в 2008 .

В Python есть встроенные функции setattr и getattr. Который может использоваться для установки и получения атрибута класса.

Краткий пример:

>>> from new import  classobj

>>> obj = classobj('Test', (object,), {'attr1': int, 'attr2': int}) # Just created a class

>>> setattr(obj, 'attr1', 10)

>>> setattr(obj, 'attr2', 20)

>>> getattr(obj, 'attr1')
10

>>> getattr(obj, 'attr2')
20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...