Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] - __str__ na class Filme

Por que no código escrito pelo professor não faz diferença escrever o pedaço de código abaixo (dentro da class Filmes), visto que o resultado ao executar o programa será a mesma impressão?

def str(self): return f' {self._nome} - {self.ano} - {self.duracao} min - {self._likes} Likes'

class Programa:
    def __init__(self, nome, ano):
        self._nome = nome.title()
        self.ano = ano
        self._likes = 0

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

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

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

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

def __str__(self):
    return f' {self._nome} - {self.ano} - {self.duracao} min - {self._likes} Likes'

class Filme(Programa):
    def __init__(self, nome, ano, duracao):
        super().__init__(nome, ano)
        self.duracao = duracao

def __str__(self):
    return f' {self._nome} - {self.ano} - {self.duracao} min - {self._likes} Likes'

class Serie(Programa):
    def __init__(self, nome, ano, temporadas):
        super().__init__(nome, ano)
        self.temporadas = temporadas

def __str__(self):
    return f' {self._nome} - {self.ano} - {self.temporadas} temporadas - {self._likes} Likes'

atlanta = Serie('atlanta', 2018, 3)
atlanta.dar_like()
atlanta.dar_like()

vingadores = Filme('vingadores', 2018, 180)
vingadores.dar_like()

filmes_e_series = [vingadores, atlanta]

for programa in filmes_e_series:
    print(programa)
1 resposta
solução!

Opa, Rodrigo! Boa tarde, como vai?

A diferença entre utilizar o trecho de código que você mencionou dentro da classe Filme ou não utilizá-lo está relacionada a finalidade da classe. Tomando como exemplo a classe Programa nela é definido o __str__ dessa forma:

def __str__(self):
    return f'Nome: {self.nome} - {self.duracao} min - Likes: {self.likes}'

Isso significa que a mesma servirá como modelo para as outras classes Filmes e Series que vão herdar e fazer modificações, no caso adições, com o atributo que elas possuem diferente do que já no modelo, sendo elas a duracao e temporadas.

De forma resumida, a forma que o instrutor implementou, faz com que o primeiro __str__ sirva de modelo e outros apenas modifiquem ele em suas classes.

Espero ter ajudado e bons estudos!

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