Bom dia Gabriel! Tudo bem com você?
Meus parabéns pela resolução do código você está no caminho certo, continue com esse empenho e dedicação.
Analisando o seu código, notei que existem dois pequenos pontos de atenção que devem ser corrigidos. No método construtor (__init__
) o argumento duracao
não foi fornecido fazendo com que seja apresentado erro no momento da criação dos objetos de classe e no quando ocorre a tentativa de atribuição do atributo self.duracao
. Para corrigir, basta adicionar o argumento duracao
no método construtor da seguinte forma:
def __init__(self, nome, artista, duracao):
Já no método listar_musicas()
está faltando o decorador @classmethod
e o argumento cls
para que ele se torne um método de classe, o método deve ficar da seguinte forma:
@classmethod
def listar_musicas(cls):
for musica in Musica.musicas:
print(f'{musica.nome} | {musica.artista} | {musica.duracao}')
Código completo com as correções aplicadas
class Musica:
musicas = []
def __init__(self, nome, artista, duracao):
self.nome = nome
self.artista = artista
self.duracao = int(duracao)
Musica.musicas.append(self)
def __str__(self):
texto = str(f'O nome da música é {self.nome}, do artista: {self.artista} e dura {self.duracao} segundos')
return texto
@classmethod
def listar_musicas(cls):
for musica in Musica.musicas:
print(f'{musica.nome} | {musica.artista} | {musica.duracao}')
lovewar = Musica('Love & War', 'Yellow Claw', 115)
print(lovewar)
mrvain = Musica('Mr Vain', 'Culture Beat', 247)
print(mrvain)
Musica.listar_musicas()
Após realizar as modificações acima, salve o arquivo e execute-o novamente.
Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!