2
respostas

Mais de um construtor na classe

Podemos ter mais de um construtor na classe?

2 respostas

Oi Gisiona Costa, isto não é possível. Você até pode ter mais de uma método __init__() em uma classe, mas ao instanciar um objeto o interpretador vai chamar o último (em ordem de declaração).

Sugiro usar*args e **kwargs quando não conhecer previamente os parâmetros.

Gisiona,

O construtor é um método que geralmente é responsável pela alocação de recursos necessários ao funcionamento do objeto além da definição inicial das variáveis de estado (atributos).

Em Python normalmente é usado o método init para definir os valores dos atributos, isto é o que eu compreendo a respeito deste método, ou seja, em meu ponto de vista ele é um construtor. Veja o exemplo para a ilustração:

class Carro(object):
    def __init__(self, modelo, ano): #Construtor da classe.
        self.modelo = modelo
        self.ano = ano

meuCarro = Carro("Jeep 4x4", 2015)
print("Modelo: %s" % meuCarro.modelo)
print("Ano: %d" % meuCarro.ano)

Contudo, descobri que o método init não é o construtor da classe, e sim o método chamado quando um objeto é requerido. E existe outros métodos que são por assim dizer construtores como o new o call

No Java eu sei que é possível, vários construtores nas não consigo ver isso no Python, pois, vc pode fazer o que quiser no init. O construtor pode receber um dict com o que você quiser e você trata no construtor como quiser.

A sugestão da Thais é excelente, era o que eu faria, você tem em python o suporte a **kwargs