由於其固有的缺點,在編程中使用 eval 通常不被鼓勵。儘管它被認為很方便,但還有更合適和更安全的替代方案,特別是在動態定義物件的屬性時。
反對使用eval 的原因:
無需 Eval 即可解決根本問題:
動態設定屬性的根本問題可以在不訴諸 eval 的情況下解決。考慮以下使用setattr 修改後的Song 類別:class Song: attsToStore = ('Name', 'Artist', 'Album', 'Genre', 'Location') def __init__(self): for att in self.attsToStore: setattr(self, att.lower(), None) # Initialize attributes with None def setDetail(self, key, val): if key in self.attsToStore: setattr(self, key.lower(), val) # Set attribute dynamically
結論:
雖然eval 可能提供明顯的易用性,但其相關的風險和限制使其成為不可取的大多數場景都需要練習。 Setattr 或類似的機制為動態定義物件屬性提供了更安全、更有效率的替代方案。以上是為什麼在程式設計中使用「eval()」被認為是一種有害的做法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!