曲のプレイリストがあり、プレイリスト内の曲ごとに SongData クラスのインスタンスを作成したいと考えています。プレイリストから曲名、アーティスト、曲のディレクトリを抽出する、含まれていないコードがあります。この質問の目的のために、これらを 3 つのリスト、songNames、artistNames、dirNames として含めました。
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
しかし、これまでのところ、一度に 1 つのデータ カテゴリしか呼び出せなかったため、Title: song1 が出力されますが、セクションArtist:
とDirectory:
セクションは空白のままです。私は使用しています:
print songs['song1']
print artists['artist1']
それらを一度に印刷するにはどうすればよいですか?問題は、各辞書のデータを参照しているだけで、その曲に関連するクラスのインスタンスを呼び出していないことだと思います。
次のように単純かつ手動で行うと機能しますが、これをループに入れる方法がわからないため、リスト、、、で機能songNames
しartistNames
ますdirNames
。
p = SongData('song1', 'artist1', 'dir1')
p.__str__()