Após transformar o like em privado aparece o erro no código. Não entendi quando o instrutor diz que 'em filme não tem mais nenhum atributo likes e não pode mais acessar' e o código não vai funcionar.
Após transformar o like em privado aparece o erro no código. Não entendi quando o instrutor diz que 'em filme não tem mais nenhum atributo likes e não pode mais acessar' e o código não vai funcionar.
Se você definir um _ antes da variável, por convenção o método não deveria ser acessado, por mais que o Python não faça a conversão do atributo para nomeClasse__nomeAtributo - que ocorre quando você coloca o __ (underscore duas vezes).
class Programa:
def __init__(self, nome, ano):
self._nome = nome.title()
self.ano = ano
self._likes = 0
Se o seu código deu erro muito provavelmente é porque ainda não implementou o @property e está tentando acessar o atributo diretamente, conforme abaixo:
vingadores = Programa("Vingadores - Guerra Infinita", 2018)
vingadores.like # Erro nessa etapa
O correto é primeiro implementar o property para poder acessar da forma acima:
class Programa:
def __init__(self, nome, ano):
self._nome = nome.title()
self.ano = ano
self._likes = 0
@property
def like(self):
return self._likes
vingadores = Programa("Vingadores - Guerra Infinita", 2018)
# Acessando diretamente os likes, mesmo o atributo sendo privado
print(vingadores.likes)