Podemos ter mais de um construtor na classe?
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