我有一个歌曲播放列表,我想为播放列表中的每首歌曲创建一个 SongData 类的实例。我有未包含的代码,可从播放列表中提取歌曲名称、艺术家和歌曲目录。出于这个问题的目的,我将它们包括为 3 个列表,即歌曲名称、艺术家名称、目录名称。
class SongData(object):
def __init__(self, title="", artist="", directory=""):
self.title, self.artist, self.directory = title, artist, directory
def __str__(self):
desc_str = "Title: %s \nArtist: %s \nDirectory: %s \n" %(self.title,
self.artist, self.directory)
print desc_str
songNames = ['song1', 'song2', 'song3']
artistNames = ['artist1', 'artist2', 'artist3']
dirNames = ['dir1', 'dir2', 'dir3']
songs = {name: SongData(title=name) for name in songNames}
artists = {band: SongData(artist=band) for band in artistNames}
directorys = {direc: SongData(directory=direc) for direc in dirNames}
我希望能够打印出每首歌曲的 desc_str ,所以它看起来像这样:
Title: song1
Artist: artist1
Directory: dir1
但到目前为止,我只设法一次调用了一个数据类别,因此它会打印 Title: song1 但将Artist:
andDirectory:
部分留空。我一直在使用:
print songs['song1']
print artists['artist1']
我怎样才能让它一次打印出来?我认为问题在于我只引用每个字典中的数据,而不是调用与该歌曲相关的类的实例。
当我如下所示简单手动执行此操作时,它可以工作,但我无法弄清楚如何将其放入循环中,以便它适用于列表songNames
, artistNames
, dirNames
.
p = SongData('song1', 'artist1', 'dir1')
p.__str__()