为什么在 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中文网其他相关文章!