Pourquoi l'utilisation de « eval » peut être risquée pour la définition d'attributs dynamiques en Python
En Python, la fonction « eval » vous permet d'exécuter une chaîne sous forme de code Python. Bien qu'il puisse sembler pratique de définir des attributs de manière dynamique dans les classes, l'utilisation de « eval » est généralement considérée comme une mauvaise pratique.
Risques liés à l'utilisation de « eval »
Solution alternative : utiliser 'setattr'
La fonction 'setattr' fournit un moyen plus sûr et plus efficace de définir des attributs de manière dynamique. Il faut trois arguments :
Par exemple, le code suivant utilise 'setattr' pour définir les attributs dans la 'Chanson'. class :
class Song: attsToStore = ('Name', 'Artist', 'Album', 'Genre', 'Location') def __init__(self): for att in self.attsToStore: setattr(self, att.lower(), None) def set_detail(self, key, val): if key in self.attsToStore: setattr(self, key.lower(), val)
Conclusion
Bien que « eval » puisse sembler offrir un moyen pratique de définir des attributs de manière dynamique, il présente des risques importants et doit être évité en faveur d'alternatives plus sûres et efficaces comme 'setattr'.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!