Warum die Verwendung von „eval“ für die dynamische Attributeinstellung in Python riskant sein kann
In Python ermöglicht Ihnen die Funktion „eval“ die Ausführung eine Zeichenfolge als Python-Code. Auch wenn es praktisch erscheint, Attribute dynamisch in Klassen festzulegen, wird die Verwendung von „eval“ im Allgemeinen als schlechte Praxis angesehen.
Risiken der Verwendung von „eval“
Alternative Lösung: Verwendung von „setattr“
Die Funktion „setattr“. Bietet eine sicherere und effizientere Möglichkeit, Attribute dynamisch festzulegen. Es werden drei Argumente benötigt:
Der folgende Code verwendet beispielsweise „setattr“, um Attribute im „Song“ festzulegen. Klasse:
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)
Fazit
Obwohl „eval“ eine praktische Möglichkeit zum dynamischen Festlegen von Attributen zu bieten scheint, birgt es erhebliche Risiken und sollte lieber vermieden werden von sichereren und effizienteren Alternativen wie „setattr“.
Das obige ist der detaillierte Inhalt vonWarum ist die Verwendung von „eval()' für die dynamische Attributeinstellung in Python riskant und was ist eine sicherere Alternative?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!