web-dev-qa-db-fra.com

Comment accéder à l'attribut d'objet avec la chaîne correspondant au nom de cet attribut

Comment définir/obtenir les valeurs des attributs de t données par x?

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

t = Test()
x = "attr1"
115
Nullpoet

Il existe des fonctions intégrées appelées getattr et setattr

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

Dans ce cas

x = getattr(t, 'attr1')
setattr(t, 'attr1', 21)
225
Pratik Deoghare

Remarque: cette réponse est très obsolète. Cela s'applique à Python 2 en utilisant le module new qui était obsolète en 2008 .

Il y a python les fonctions intégrées setattr et getattr. Ce qui permet de définir et d'obtenir l'attribut d'une classe.

Un bref exemple:

>>> 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
2
aatifh