Minha dúvida é o seguinte, foi comentado em aula a respeito de usar apenas um "_", para não privar as classes filhas de acessar o atributo da classe mãe, desta forma:
class Programa:
def __init__(self, nome, ano):
self._nome = nome.title()
self.ano = ano
self._likes = 0
class Filme(Programa):
def __init__(self, nome, ano, duracao):
self._nome = nome.title()
self.ano = ano
self.duracao = duracao
self._likes = 0
Posteriormente foi introduzido o conceito da super classe, sendo uma forma mais direta de acesso ao atributo da classe mãe. Não foi explicado se, no caso do uso da super classe deveria manter essa forma de construção com apenas um "_"
, nos atributos privados. Verifiquei no código que no uso da super classe funciona o método nativo do Python, ou seja, com dois "__"
class Programa:
def __init__(self, nome, ano):
self.__nome = nome.title()
self.ano = ano
self.__likes = 0
class Filme(Programa):
def __init__(self, nome, ano, duracao):
super().__init__(nome, ano)
self.duracao = duracao
Mas, considerando a questão da sintaxe e convenções da comunidade, qual é considerado mais enxuto, legível e adotado no caso do uso da super classe. Construo com base na convenção da comunidade ou já que é funcional mantenho o método nativo, um ou dois underscore para privar o atributo na classe mãe, em casos de uso da super classe: super().__init__
?