t = Test() x = "attr1" print ("Attribute value of {0} is {1}".format(x, t.get(x)))
Выводит:
Attribute value of attr1 is1
Другим способом, который мог бы скрыть это еще лучше, было бы использование волшебного метода __getattribute__, но я продолжал получать бесконечный цикл, который я не смог разрешить при попытке получить значение атрибута внутри этого метода.
Также обратите внимание, что вы можете альтернативно использовать vars(). В приведенном выше примере вы могли бы заменить его getattr(self,varname) на return vars(self)[varname], но getattrможет быть предпочтительнее в соответствии с ответом на В чем разница между vars и setattr?.
Ответ 3
Примечание: Этот ответ очень устарел. Он применим к Python 2 с использованием new модуля, который устарел в 2008 году.
В функции setattr и getattr на python встроены функции. Которые можно использовать для установки и получения атрибута класса.
Краткий пример:
>>> from new import classobj
>>> obj = classobj('Test', (object,), {'attr1': int, 'attr2': int}) # Just created a class