1
resposta

RESPOSTA: [Mão na massa]: refatorando uma função

class Music:
    musics = []

    def __init__(self, name: str, artist: str, duration: float):
        self.name = name
        self.artist = artist
        self.duration = duration
        Music.musics.append(self)

    def __str__(self):
        return f"song: {self.name} | artist: {self.artist} | duration: {self.duration} minutes."

    def show_musics():
        for music in Music.musics:
            print(music)


music1 = Music("Me and Bob McGee", "Janis Joplin", 4.32)
music2 = Music("What's Up", "4 Non Blonds", 4.53)
music3 = Music("Ode To My Family", "The Cranberries", 4.33)

Music.show_musics()
1 resposta

Oi, Thaís! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu uso do construtor para registrar cada música automaticamente na lista da classe ficou muito claro e organizado. Gostei de como você estruturou o __str__, deixando a impressão da música bem legível.

Uma dica interessante para o futuro é criar métodos de classe usando @classmethod, o que deixa explícito que o método acessa dados da própria classe. Veja este exemplo:


class Music:
    musics = []

    @classmethod
    def total_musics(cls):
        return len(cls.musics)

print(Music.total_musics())

Esse código retorna quantas musicas foram registradas.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!