Я использую следующий класс, чтобы легко хранить данные моих песен.
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
представляется плохой практикой и небезопасно использовать. Если да, то может ли кто-нибудь объяснить мне, почему и показать мне лучший способ определения вышеуказанного класса?