Je lis qu'eval() peut être dangereux car il expose les éléments "privés" des objets (exemple ici), et j'ai donc appris à ne pas l'utiliser. Qu'en est-il d'exec()? est-ce qu'on "a le droit" de l'utiliser ou mieux vaut-il l'éviter lui aussi?
Là tout de suite je me tape des objets dont les noms des attributs sont contenus dans une liste d'entrée et qu'il faut ensuite initialiser, et je ne vois pas comment faire autrement qu'avec exec() si je veux pouvoir faire ça à la volée:
in_attr = ['input1','input2']
in_val = [2,5]
for idx,attr in enumerate(in_attr):
exec('my_obj.inputs.' + attr + ' = ' + str(in_val[idx]))