為什麼在Python 中使用'eval' 進行動態屬性設定會有風險
在Python 中,'eval' 函數允許您執行作為Python 程式碼的字串。雖然在類別中動態設定屬性似乎很方便,但使用“eval”通常被認為是不好的做法。
使用「eval」的風險
替代解決方案:使用「setattr」
'setattr'函數提供了一種更安全、更有效率的屬性設定方式動態地。它需要三個參數:
例如,以下程式碼使用 'setattr' 設定 'Song'中的屬性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)
結論
雖然「eval」似乎提供了一種動態設定屬性的便利方法,但它會帶來重大風險,應避免使用更安全、更有效率的替代方案,如「setattr」。
以上是為什麼在 Python 中使用 eval() 進行動態屬性設定有風險,什麼是更安全的替代方案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!