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:
Contudo, na pesquisa que fiz, eu descobri que o método __init__ não é o construtor da classe, e sim o método chamado quando um objeto é requerido. Agora fiquei confuso a respeito de onde é o local de um construtor de uma classe em Python. Onde seria o local do construtor?
Isso é uma tecnicalidade e podemos considerá-lo como o construtor. De fato ele é um inicializador, conforme já havia escrito em pergunta anterior, mas o inicializador será chamado todas as vezes que for criado um objeto novo, logo após chamar o __new__ que será o alocador de memória do objeto. Este alocador é provido pela linguagem se você não definir um, o que raramente é necessário, normalmente em objetos imutáveis pode ser interessante.