我使用下面的类来轻松地存储我的歌曲数据。
class Song:
"""The class to store the details of each song"""
attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location')
def __init__(self):
for att in self.attsToStore:
exec 'self.%s=None'%(att.lower()) in locals()
def setDetail(self, key, val):
if key in self.attsToStore:
exec 'self.%s=val'%(key.lower()) in locals()
我觉得这比写一个 if/else
块更具可扩展性。然而,我听说 eval
是不安全的。是吗?有什么风险?如何解决我的类中的根本问题(动态设置 self
的属性)而不会引发风险?
exec/eval
的,却不知道setattr
呢? - u0b34a0f6ae