#python-3.x #class #methods
#python-3.x #класс #методы
Вопрос:
Я хочу создать метод, который добавляет строку в мою переменную. В настоящее время у меня есть следующее
class Album :
def __init__(self,nbr,nbr_songs):
self.header = 'Album ' str(nbr) ' (' str(nbr_songs) ' songs)')
def add(self,song,n):
self.line = song
self.nbre = n # This is the count of how many song there is
def __str__(self):
s = self.header
s = 'n' "{:02}".format(self.nbre) ': ' str(self.line)
return s
Требуемый результат следующий
Album 1 (3 songs)
01: White_Wedding - Billy_Idol - 00:04:12
02: Stand_And_Deliver - Adam_amp;_The_Ants - 00:03:33
03: You_Spin_Me_Around - Dead_Or_Alive - 00:03:14
Проблема в том, что когда я добавляю три песни в альбом одну за другой, он возвращает следующее.
Album 1 (3 songs)
01: You_Spin_Me_Around - Dead_Or_Alive - 00:03:14
Я знаю, что в моем коде чего-то не хватает, но я не могу понять, чего.
Ответ №1:
Это ни в коем случае не идеальное решение, но я думаю, что было бы определенным улучшением создать отдельный Song
класс и, возможно, даже Artist
один, и иметь список песен в вашем Album
классе:
class Song:
def __init__(self, title, artists, duration, album, track_number):
self.title = title
self.artists = artists
self.duration = duration
self.album = album
self.track_number = track_number
def __str__(self):
return f'{self.track_number:02}: {self.title} - {self.artists} - {self.duration}'
class Album:
def __init__(self, number):
self.number = number
self.songs = []
def add_song(self, title, artists, duration):
track_number = len(self.songs) 1
song = Song(title, artists, duration, self, track_number)
self.songs.append(song)
def __str__(self):
header = f'Album {self.number} ({len(self.songs)} songs)'
str_list = [header]
for song in self.songs:
str_list.append(str(song))
return 'n'.join(str_list)
album = Album(1)
album.add_song('White_Wedding', 'Billy_Idol', '00:04:12')
album.add_song('Stand_And_Deliver', 'Adam_amp;_The_Ants', '00:03:33')
album.add_song('You_Spin_Me_Around', 'Dead_Or_Alive', '00:03:14')
print(album)
Вывод:
Album 1 (3 songs)
01: White_Wedding - Billy_Idol - 00:04:12
02: Stand_And_Deliver - Adam_amp;_The_Ants - 00:03:33
03: You_Spin_Me_Around - Dead_Or_Alive - 00:03:14
Комментарии:
1. Это идеально подходит для моего варианта использования… Большое вам спасибо!