Na definição da classe e dos seus atributos, eu não entendi exatamente o que a função ''__init__
" faz e em que casos devo chamar ela, não me ficou claro.
Na definição da classe e dos seus atributos, eu não entendi exatamente o que a função ''__init__
" faz e em que casos devo chamar ela, não me ficou claro.
Olá Weslen, tudo bem com você?
O '__ init__' é um método construtor, ele será chamado assim que a classe for instanciada com a criação de um novo objeto.
A sintaxe do método construtor __init__
será da seguinte forma:
def __init__(self, < Atributos>):
< Código_do_método_construtor>
self
é definido por convenção.É através do método construtor que vamos definir o que o nosso objeto terá assim que for criado, essa definição poderá ser feita através da definição de atributos por exemplo, podendo também ter instruções que serão executadas assim que o objeto for instanciado (criado).
Digamos que queremos criar uma classe que será responsável por criar objetos do tipo pessoas:
class Pessoa:
def __init__(self, nome):
self.nome = nome
print(f"Olá {self.nome}")
obj_pessoa = Pessoa("José")
Resultado
Olá José
No exemplo acima, temos a criação de um objeto do tipo Pessoa
, para criarmos esse objeto passamos um atributo inicial nome
; esse atributo é salvo utilizando o self
como referência; note que não foi necessário chamarmos um método para que fosse apresentado a mensagem de saudação, no momento da criação do objeto o código do método construtor é executado por completo buscando o nome salvo na referência self.nome
.
Em resumo, o método construtor __init__
será utilizado sempre que precisamos adicionar uma inicialização para um objeto e que essa inicialização ocorra no momento da instanciação do objeto (criação do objeto).
Para saber um pouco mais sobre o método construtor __init__
recomendo a leitura do seguinte artigo:
O artigo acima está em inglês, caso tenha dificuldades com o idioma, recomendo o uso do tradutor do navegador.
Em caso de dúvidas, encontro-me à disposição.
Abraços e bons estudos.
Muito obrigado pela atenção! Muito didático e esclarecedor, até
Resposta muito boa, me tirou algumas dúvidas também.