1
resposta

[Projeto] Código final do primeiro módulo

Meu código ficou desse jeito. Achei melhor implementar uma função para poder exibir os dados de cada Filme/Série

class Filme:

    def __init__(self, nome, ano, duracao):
        self.__nome = nome.title()
        self.ano = ano
        self.duracao = duracao
        self.__likes = 0

    @property
    def likes(self):
        return self.__likes

    @property
    def nome(self):
        return self.__nome

    @nome.setter
    def nome(self, novo_nome):
        self.__nome = novo_nome

    def dar_like(self):
        self.__likes += 1

    def exibir_dados(self):
        print(f"Filme: {self.__nome}, Ano: {self.ano}, Duração: {self.duracao}")


class Serie:

    def __init__(self, nome, ano, temporadas):
        self.__nome = nome.title()
        self.ano = ano
        self.temporadas = temporadas
        self.__likes = 0

    @property
    def likes(self):
        return self.__likes

    def dar_likes(self):
        self.__likes += 1

    @property
    def nome(self):
        return self.__nome

    @nome.setter
    def nome(self, novo_nome):
        self.__nome = novo_nome

    def exibir_dados(self):
        print(f"Série: {self.__nome}, Ano: {self.ano}, Temporadas: {self.temporadas}")


filme1 = Filme("Vingadores", 2010, 240)
serie1 = Serie("One Piece", 1995, 17)

Filme.exibir_dados(filme1)
Serie.exibir_dados(serie1)
1 resposta

Olá, Yan. Tudo bem?

Parabéns pela implementação do código da aula.

A ideia de implementar uma função para exibir os dados de cada Filme e Série é boa. Mostra sua atenção para deixar o código mais legível e organizado.

Deixo como dica uma forma mais Pythônica de exibir as informações de um objeto de uma classe no Python, que é feita por meio do método __str__().

Desse modo, ao invés de criar o método chamado exibir_dados(), criamos um método __str__() em cada uma das classes:

Na classe Filme:

def __str__(self):
    return f"Filme: {self.__nome}, Ano: {self.ano}, Duração: {self.duracao}"

E na classe Serie:

def __str__(self):
    return f"Série: {self.__nome}, Ano: {self.ano}, Temporadas: {self.temporadas}"

Assim, quando quisermos printar as informações de um filme ou série, basta chamar a função print passando como parâmetro o objeto que queremos exibir. Como no exemplo a seguir:

print(filme1)
print(serie1)

Isso torna o código mais legível e intuitivo.

Deixo como recomendação o curso de PEP 8 aqui da Alura, que trata sobre boas práticas de código utilizando o Python, ensinando como escrever códigos mais legíveis e que se preocupam com a qualidade:

Lembre-se que você pode contar sempre com o fórum Alura para mostrar seu desenvolvimento e tirar suas dúvidas. E mais uma vez parabenizo pelo seu código e deixo meu muito obrigada por ter compartilhado conosco :)

Fico à disposição.

Abraços. Bons estudos!