Comment définir / obtenir les valeurs des attributs de t
donné par x
?
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
python
object
attributes
Nullpoet
la source
la source
df1
, et une variablex = 'df1'
ie df1 comme une chaîne dans var x. je veux imprimer la forme de df comme ça,getattr(x, 'shape')
ougetattr('df1', 'shape')
. Je sais que cela ne peut pas être fait avec getattr, aucune autre méthode.getattr(globals()[x], 'shape')
Remarque: cette réponse est très obsolète. Il s'applique à Python 2 en utilisant le
new
module qui était obsolète en 2008 .Il y a python intégré aux fonctions setattr et getattr. Qui peut utilisé pour définir et obtenir l'attribut d'une classe.
Un bref exemple:
la source
Si vous souhaitez garder la logique cachée à l'intérieur de la classe, vous pouvez préférer utiliser une méthode getter généralisée comme ceci:
Les sorties:
Une autre approche qui pourrait le cacher encore mieux serait d'utiliser la méthode magique
__getattribute__
, mais j'ai continué à obtenir une boucle sans fin que je ne pouvais pas résoudre en essayant de récupérer la valeur d'attribut dans cette méthode.Notez également que vous pouvez également utiliser
vars()
. Dans l'exemple ci-dessus, vous pourriez échangergetattr(self,varname)
parreturn vars(self)[varname]
, mais celagetattr
pourrait être préférable selon la réponse à Quelle est la différence entrevars
etsetattr
? .la source