Comment puis-je réaliser un tel travail:
def get_foo(someobject, foostring):
return someobject.foostring
C'EST À DIRE:
si je fais get_foo(obj, "name")
il devrait appeler obj.name
(voir entrée comme chaîne mais je l'appelle comme attritube.
Merci
Utilisez la fonction intégrée getattr
.
getattr ( objet, nom [ par défaut])
Renvoie la valeur de l'attribut nommé objet. nom doit être une chaîne. Si la chaîne est le nom d'un des attributs de l'objet, le résultat est la valeur de cet attribut. Par exemple,
getattr(x, 'foobar')
est équivalent àx.foobar
. Si l'attribut nommé n'existe pas, par défaut est renvoyé s'il est fourni, sinon AttributeError est déclenché.
Si someobject
a un attribut nommé foostring
alors
def get_foo(someobject, foostring):
return getattr(someobject,foostring)
ou si vous souhaitez définir un attribut sur l'objet fourni, alors:
def set_foo(someobject, foostring, value):
return setattr(someobject,foostring, value)
Essayez-le
Vous devez utiliser setattr et getattr:
setattr(object,'property',value)
getattr(object,'property',default)