Python, Évaluer la valeur d'une Variable en tant que Variable
J'aimerais faire quelque chose comme ci-dessous: en particulier le " f.eval(champ), tel qu'il évalue la valeur de la variable, comme le nom du champ. Comment accomplir cela en Python?
def punctuated_object_list(objects, field):
field_list = [f.eval(field) for f in objects]
if len(field_list) > 0:
if len(field_list) == 1:
return field_list[0]
else:
return ', '.join(field_list[:-1]) + ' & ' + field_list[-1]
else:
return u''
+1 avec mes remerciements pour cette question avant j'avais besoin 🙂 .
OriginalL'auteur Antonius Common | 2009-03-11
Vous devez vous connecter pour publier un commentaire.
getattr(f, field)
, si je vous comprends bien (qui est, si vous pourriez avoirfield = "foo"
, et que vous voulezf.foo
). Si pas, vous pouvez le préciser. Python a uneeval()
, et je ne sais pas ce que les autres langues "eval()
vous voulez l'équivalent d'.Je suis bête... eval(eval()) en python... merci pour votre réponse!
désolé, vous avez plus de droit!
OriginalL'auteur Devin Jeanpierre
Pour plus de détails, voir: http://www.diveintopython.org/power_of_introspection/index.html
Ne pas utiliser la fonction eval, même si les chaînes sont en sécurité dans ce cas particulier! Il suffit de ne pas s'habituer à elle. Si vous avez de la chaîne de l'utilisateur, il pourrait être un code malveillant.
La loi de Murphy: si les choses peuvent aller mal, il le fera.
prenons le cas lorsque le code est exécuté sur un serveur,
OriginalL'auteur hasen
Le python équivalent de
eval()
esteval()
vous donnera 18.
travaille trop.
eval est le mal! mieux vaut ne pas l'utiliser du tout, il y a toujours une meilleure façon
OriginalL'auteur MarkusQ
Pour obtenir une liste de tous les champs d'un objet Python, vous pouvez accéder à son
__dict__
propriété.résultats:
OriginalL'auteur Soviut