노래의 데이터를 쉽게 저장하기 위해 다음 클래스를 사용하고 있습니다.
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
습니까?