1
resposta

Mão na massa

Bom dia. Segue meu código para avaliação. Obrigado!

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

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

    @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.title()

# Em herança, quando se usa atributos privados não são herdados pela classe filha
# Para solucionar isso, ao invés do duplo underscore, use um simples underscore
# O python não vai fazer o name mangling e essa forma de nomear é uma convenção
# A resolução correta pra evitar duplicação é usar o método super().__init__(argumentos da classe mae sem self)

# Exeplo:
# class ParentClass:
#   def __init__(self, pcatt1, pcatt2):
#       self.pcatt1 = pcatt1
#       self.pcatt2 = pcatt2

# class ChildClass(ParentClass):
#    def __init__(self, pcattr1, pcattr2, ccatt1, ccatt2):
#       super().__init__(pcatt1, pcatt2)
#       self.ccatt1 = ccatt1
#       self.ccatt2 = ccatt2


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


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


vingadores = Filme('vingadores - guerra infinita', 2018, 160)
atlanta = Serie('atlanta', 2018, 2)

vingadores.dar_likes()
vingadores.dar_likes()
vingadores.dar_likes()

atlanta.dar_likes()
atlanta.dar_likes()

print(f"{vingadores.nome} - {vingadores.duracao}: {vingadores.likes}")
print(f"{atlanta.nome} - {atlanta.temporadas}: {atlanta.likes}")
1 resposta

Olá João, tudo bem com você?

Parabéns pelo código! O uso dos comentários é uma boa forma de fixarmos o que estamos aprendendo, a explicação e o exemplo da herança de atributos privados ficou muito bom.

Continue assim, conte sempre com o fórum.

Em caso de dúvidas, encontro-me à disposição.

Abraços e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software