Podemos ter mais de um construtor na classe?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Podemos ter mais de um construtor na classe?
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