次のクラスを使用して、曲のデータを簡単に保存しています。
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
は悪い習慣と見なされ、使用するのは安全ではないようです。もしそうなら、誰かが私に理由を説明し、上記のクラスを定義するより良い方法を私に示すことができますか?
exec/eval
、まだ知りませんでしたかsetattr
?