由于其固有的缺点,在编程中使用 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中文网其他相关文章!