2
respostas

Mão na massa: refatorando uma função

class Musica:
    musicas = []

    def __init__(self, nome, artista, duracao):
        self.nome = nome
        self.artista = artista
        self.duracao = duracao
        Musica.musicas.append(self)

    def __str__(self):
        return f'{self.nome} | {self.artista} | {self.duracao}'

    def listar_musicas():
        for musica in Musica.musicas:
            print(f'{musica.nome} | {musica.artista} | {musica.duracao}')

# Instanciando a classe Musica
musica1 = Musica('Bohemian Rhapsody', 'Queen', 354)

# Listando as músicas
Musica.listar_musicas()
2 respostas

Oi, Anderson! Tudo bem?

Excelente código, parabéns pelo projeto! Espero que esteja gostando do curso! Colocar em execução as atividades propostas pelo professor em aula é uma prática muito importante para internalizarmos o conteúdo. Caso tenha ficado alguma dúvida em relação ao curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!

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) -> str:
        return f'Nome:{self.nome}\nArtista:{self.artista}\nDuração:{self.duracao} minutos'
  
  def visualizar(self):
        print(self)
    
    def listar_musicas():
        for musica in Musica.musicas:
            print(f'Nome:{musica.nome} | Artista:{musica.artista} | Duração: {musica.duracao}')


sandy_junior= Musica('Imortal','Sandy&Jr',4)
marisa_monte = Musica('Ainda Bem', 'Marisa Monte', 3)

Musica.listar_musicas()

também vi algo como usar @classmethod em visualizar, ficando:

@classmethod
def listar_musicas(cls):
        for musica in Musica.musicas:
            print(f'Nome:{musica.nome} | Artista:{musica.artista} | Duração: {musica.duracao}')

Isso permite que o método seja sempre da classe e não de uma instância, mantendo integridade do dado. Correto?