1
resposta

[Sugestão] Mão na massa: classe música

Quais são as melhores formas de instanciar objetos e chama-los ?

class Musica:
    nome = ''
    artista = ''
    duracao = int



lista_musicas = []

def criando_objetos():    
    for obj in range(3):
        try:
            obj = Musica()
            obj.nome = input('Digite o nome da música: ')
            obj.artista = input('Digite o nome do artista: ')
            obj.duracao = int(input('Digite a duração da música em segundos: '))  
            lista_musicas.append(obj)
        except ValueError:
            lista_musicas.clear()
            print('Valor invalido! Digite a duração em segundos.')
            return criando_objetos()


def main():
    criando_objetos()
    
    for musica in lista_musicas:
        print(vars(musica))

if __name__ == '__main__':
    main()
1 resposta

Olá, William! Como vai?

Que bom que você está se dedicando a entender a orientação a objetos em Python!

E pode deixar que eu estou aqui para dar algumas dicas que vão melhorar ainda mais o seu código, vamos lá?!

  1. Construtor __init__: Em Python, é comum usar o método especial __init__ para inicializar os atributos de um objeto quando ele é criado. Isso torna o código mais claro e organizado. Veja como você pode modificar sua classe Musica para incluir um construtor:

    class Musica:
        def __init__(self, nome, artista, duracao):
            self.nome = nome
            self.artista = artista
            self.duracao = duracao
    
  2. Instanciando Objetos: Com o construtor, você pode criar objetos de forma mais direta, passando os valores dos atributos no momento da criação:

    def criando_objetos():    
        for _ in range(3):
            try:
                nome = input('Digite o nome da música: ')
                artista = input('Digite o nome do artista: ')
                duracao = int(input('Digite a duração da música em segundos: '))
                
                obj = Musica(nome, artista, duracao)
                lista_musicas.append(obj)
            except ValueError:
                lista_musicas.clear()
                print('Valor invalido! Digite a duração em segundos.')
                return criando_objetos()
    
  3. Acessando Atributos: Você já está usando a função vars() para acessar os atributos do objeto, o que é ótimo. Outra forma comum é acessar diretamente os atributos, como musica.nome, musica.artista... caso você precise manipular os dados individualmente.

Espero ter ajudado e fico à disposição se precisar.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado