2
How the name of the classes inserted within the constructor’s parentheses works __init__( )
, in the classes Telefones
, TiposTelefone
and Agenda
?
This is only an excerpt of Chapter 10 code from the book "Introduction to Programming with Python" by Author: Nilo Ney Coutinho Menezes.
class ListaUnica:
def __init__(self, elem_class):
self.lista = []
self.elem_class = elem_class
...
class Telefone:
def __init__(self, numero, tipo=None):
self.numero = numero
self.tipo = tipo
...
class Telefones(ListaUnica):
def __init__(self):
# Não entendo QUAL O FUNCIONAMENTO da classe Telefone
# dentro do __init__ do método super(). Até onde estudei
# sobre POO, a função construtora é usada para
# inserir parâmetros, (ou não), para a classe, e normalmente
# HERDAMOS ESSES PARÂMETROS da superclasse (no caso,
# da classe ListaUnica) usando o método built-in super(),
# mas aqui nesse caso, inserimos a classe
# Telefone no lugar de onde seria normalmente inserido parâmetros
# que herdariamos da classe pai (no caso, ListaUnica),
# acabei ficando sem entender o fluxo do código,
# poderia me explicar o que acontece com o código na linha abaixo...
super().__init__(Telefone)
class DadoAgenda:
def __init__(self, nome):
self.nome = nome
self.telefones = Telefones()
...
class TiposTelefone(ListaUnica):
def __init__(self):
# não entendo qual o funcionamento da classe TiposTelefone
# dentro do __init__ do metodo super() tbm!!!.
super().__init__(TipoTelefone)
class Agenda(ListaUnica):
def __init__(self):
# não entendo qual o funcionamento da classe DadoAgenda
# dentro do __init__ do metodo super() tbm!!!.
super().__init__(DadoAgenda)
self.tiposTelefone = TiposTelefone()
...
You’re talking about the
self, elem_class
?– Maniero
No, I’m talking about that name().init(Phone), do not know what works in the code!!!
– Eduardo
What do you mean by functioning?
– Maniero
i mean is that I can not understand the pq and what makes the name of a class (in case, the name of the Phone class) be within the parentheses of the init of the super() method, up to where I studied POO, the super() method serves only to inherit the parameters of the parent class (in this case, the Listunica class), and in the place from which it is done (inherit parameters) is the name of a class, I did not understand the pq of it...
– Eduardo
With the
super().__init__()
you will invoke the method__init__
ofListaUnica
, you receive as a parameterelem_class
. The class name here will be the value ofelem_class
– Woss
ok, so far so good, but in one should have been inserted the name elem_class instead of Phone, like: super().init(elem_class) ? , I don’t know why: super().init(Phone), because as far as I know about inheritance, the attributes are manipulated only between the parent class (Listaunica class) and the daughter class (Phones), so because of a class that has nothing to do with the two (Listaunica and Telefone) have been configured in the init() of the super method()?
– Eduardo