1
resposta

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

class Musica():

    album_musical = []

    def __init__(self, nome, artista):
        self.nome = nome
        self.artista = artista
        self.duracao = int
        Musica.album_musical.append(self)
    
    def __str__(self):
        return f'{self.nome} || {self.artista}'

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

jazz = Musica('Aprendendo', 'Fulano')
eletronica = Musica('Pumprama', 'Ciclano')
indie = Musica('Nigth', 'Beltrano')

album_musical = [jazz, eletronica, indie]        

Musica.listar_musicas()
1 resposta

E aí, Paulo! Tudo bem?

Parabéns! Mantenha o ritmo nos exercícios e continue compartilhando na nossa comunidade.

Percebi que você praticou o uso de atributos de classe para organizar sua playlist musical, aplicou muito bem o método especial __str__ para personalizar a saída dos objetos e ainda entendeu a relevância de métodos estáticos para manipular coleções de instâncias.

Uma sugestão para evoluir ainda mais é usar @classmethod com o objetivo de tornar métodos que manipulam o próprio estado da classe mais claros e reutilizáveis. Veja só:

class Musica():
    album_musical = []

    def __init__(self, nome, artista):
        self.nome = nome
        self.artista = artista
        Musica.album_musical.append(self)
    
    def __str__(self):
        return f'{self.nome} || {self.artista}'

    @classmethod
    def listar_musicas(cls):
        for musica in cls.album_musical:
            print(f'{musica.nome} || {musica.artista}')

Essa abordagem ajuda a melhorar a legibilidade e reforçar a relação entre método e classe, que pode ser muito útil para evoluir a estética do seu código.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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