293 votes

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

Comment définissez-vous/obtenez-vous 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"

508voto

Pratik Deoghare Points 9766

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)

3voto

Algunillo Points 33

Note : Cette réponse est très obsolète. Il s'applique au Python 2 utilisant le module new qui a été déprécié en 2008.

Il y a du python intégré dans les fonctions 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X