{"id":10617,"date":"2023-08-23T12:03:17","date_gmt":"2023-08-23T15:03:17","guid":{"rendered":"https:\/\/www.homehost.com.br\/blog\/?p=10617"},"modified":"2025-05-02T19:52:02","modified_gmt":"2025-05-02T22:52:02","slug":"init-python","status":"publish","type":"post","link":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/","title":{"rendered":"init python: Aprenda a usar __init__\u00a0em python"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large is-style-default\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python-1024x684.png\" alt=\"m\u00e9todo __init__ python\" class=\"wp-image-10634\" width=\"1024\" height=\"684\" srcset=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python-1024x684.png 1024w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python-300x200.png 300w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python-768x513.png 768w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python.png 1079w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>O m\u00e9todo&nbsp;<strong>init do python<\/strong> \u00e9 uma fun\u00e7\u00e3o especial que podemos aplicar para inicializar uma classe. Quando criamos objeto da classe, o m\u00e9todo \u00e9 aplicado automaticamente e definindo comportamento inicial do objeto. Nesse sentido, podemos usar o objeto da classe como um ponteiro para o objeto que est\u00e1 sendo inicializado, acessando atributos e m\u00e9todos da classe e realizando qualquer outra opera\u00e7\u00e3o necess\u00e1ria para inicializar o objeto.<\/p>\n\n\n\n<p>Neste artigo, vamos explorar o m\u00e9todo\u00a0<code><strong>__init__<\/strong><\/code>\u00a0em Python. Assim, aprendendo sobre como podemos utilizar para inicializar classes, incluindo o que \u00e9 e como pode est\u00e1 sendo aplicado para manter a integridade dos dados. Discutiremos como criar um m\u00e9todo\u00a0<code><strong>__init__<\/strong><\/code>\u00a0e a sintaxe necess\u00e1ria para que ele funcione. Al\u00e9m disso, aprenda tamb\u00e9m sobre como a <a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/append-python\/\">adicionar elementos de forma eficiente<\/a> e utilize os dois conhecimento para melhor seu c\u00f3digo. <\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_72 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Conte\u00fado<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#Sintaxe\" title=\"Sintaxe\">Sintaxe<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#Exemplos_de_uso_do_metodo_init_em_diferentes_tipos_de_objetos_em_Python\" title=\"Exemplos de uso do m\u00e9todo&nbsp;__init__&nbsp;em diferentes tipos de objetos em Python\">Exemplos de uso do m\u00e9todo&nbsp;__init__&nbsp;em diferentes tipos de objetos em Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#Como_o_metodo_init_pode_esta_sendo_utilizado_para_implementar_heranca_em_Python\" title=\"Como o m\u00e9todo&nbsp;__init__&nbsp;pode est\u00e1 sendo utilizado para implementar heran\u00e7a em Python\">Como o m\u00e9todo&nbsp;__init__&nbsp;pode est\u00e1 sendo utilizado para implementar heran\u00e7a em Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#Metodos_similares_ao_metodo_init_em_Python\" title=\"M\u00e9todos similares ao m\u00e9todo&nbsp;__init__&nbsp;em Python&nbsp;\">M\u00e9todos similares ao m\u00e9todo&nbsp;__init__&nbsp;em Python&nbsp;<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#Dicas_para_escrever_um_codigo_eficiente_com_o_metodo_init_em_Python\" title=\"Dicas para escrever um c\u00f3digo eficiente com o m\u00e9todo&nbsp;init&nbsp;em Python\">Dicas para escrever um c\u00f3digo eficiente com o m\u00e9todo&nbsp;init&nbsp;em Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#Tendencias_e_novidades_em_relacao_ao_metodo_init_em_versoes_recentes_do_Python\" title=\"Tend\u00eancias e novidades em rela\u00e7\u00e3o ao m\u00e9todo&nbsp;init&nbsp;em vers\u00f5es recentes do Python.\">Tend\u00eancias e novidades em rela\u00e7\u00e3o ao m\u00e9todo&nbsp;init&nbsp;em vers\u00f5es recentes do Python.<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sintaxe\"><\/span>Sintaxe <span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Utilizamos o m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;em Python para inicializar uma classe. Quando fazemos o <a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/input-python\/\">input<\/a> um objeto da classe, o m\u00e9todo aplicado automaticamente. Dessa forma, a sintaxe b\u00e1sica do m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;\u00e9 a seguinte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def __init__(self, *args, **kwargs):\n    # c\u00f3digo a ser executado durante a inicializa\u00e7\u00e3o do objeto<\/code><\/pre>\n\n\n\n<p>O primeiro par\u00e2metro do m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;\u00e9 a lista de argumentos (<code>*args<\/code>). Podemos utilizar para passar argumentos de constru\u00e7\u00e3o para a classe quando criamos um objeto. Al\u00e9m disso, se n\u00e3o houver argumentos de constru\u00e7\u00e3o, podemos passar&nbsp;<code>None<\/code>&nbsp;para o primeiro par\u00e2metro.<\/p>\n\n\n\n<p>O segundo par\u00e2metro do m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;\u00e9 a lista de par\u00e2metros de inicializa\u00e7\u00e3o (<code>**kwargs<\/code>). Podemos est\u00e1 utilizando para passar par\u00e2metros de inicializa\u00e7\u00e3o para a classe quando fazemos o input de um objeto. Portanto, os par\u00e2metros de inicializa\u00e7\u00e3o est\u00e3o sendo passados como uma chave-valor associativa, onde a chave \u00e9 o nome do par\u00e2metro e o valor \u00e9 o valor do par\u00e2metro.<\/p>\n\n\n\n<p>Executamos o c\u00f3digo dentro do m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp; quando criamos um objeto. Dessa forma, podemos utilizar o objeto da classe como um ponteiro para o objeto que est\u00e1 sendo inicializado, acessando atributos e m\u00e9todos da classe e realizando qualquer outra opera\u00e7\u00e3o necess\u00e1ria para inicializar o objeto.<\/p>\n\n\n\n<p>Neste exemplo a baixo, criamos uma classe&nbsp;<code>Car<\/code>&nbsp;com um m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;que recebe tr\u00eas par\u00e2metros (<code>make<\/code>,&nbsp;<code>model<\/code>&nbsp;e&nbsp;<code>year<\/code>). O c\u00f3digo dentro do m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;<a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/input-python\/\">atribui<\/a> esses valores aos atributos correspondentes. Assim, tamb\u00e9m criamos um m\u00e9todo&nbsp;<code><strong>start<\/strong><\/code>&nbsp;e um m\u00e9todo&nbsp;<code><strong>stop<\/strong><\/code>&nbsp;que imprimem informa\u00e7\u00f5es sobre o carro. Quando criamos um objeto da classe&nbsp;<code>Car<\/code>&nbsp;e chamamos os m\u00e9todos&nbsp;<code><strong>start<\/strong><\/code>&nbsp;e&nbsp;<code><strong>stop<\/strong><\/code>, o c\u00f3digo dentro do m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;\u00e9 executado. Veja:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Car:\n    def __init__(self, make, model, year):\n        self.make = make\n        self.model = model\n        self.year = year\n\n    def start(self):\n        print(f\"Starting {self.make} {self.model} {self.year}\")\n\n    def stop(self):\n        print(f\"Stopping {self.make} {self.model} {self.year}\")\n\ncar = Car(\"Toyota\", \"Corolla\", 2022)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Exemplos_de_uso_do_metodo_init_em_diferentes_tipos_de_objetos_em_Python\"><\/span>Exemplos de uso do m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;em diferentes tipos de objetos em Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>O m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;\u00e9 um m\u00e9todo especial em Python que \u00e9 chamado automaticamente quando criamos um objeto. Dessa forma, o m\u00e9todo pode est\u00e1 sendo utilizado para inicializar o objeto e atribuir valores aos seus atributos. Aqui est\u00e3o alguns exemplos de como o m\u00e9todo&nbsp;init&nbsp;pode est\u00e1 sendo utilizado em diferentes tipos de objetos em Python:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. Objetos de classes simples:<\/h4>\n\n\n\n<p>Temos um exemplo b\u00e1sico de cria\u00e7\u00e3o de uma classe Python chamada &#8220;Pessoa&#8221;. A classe tem um m\u00e9todo especial chamado &#8220;<strong>init<\/strong>&#8221; que est\u00e1 sendo chamado quando criamos um objeto da classe. Dessa forma, o m\u00e9todo recebe dois argumentos, &#8220;nome&#8221; e &#8220;idade&#8221;, que pode est\u00e1 sendo atribu\u00eddos aos atributos &#8220;nome&#8221; e &#8220;idade&#8221; do objeto Pessoa. No final, criamos um objeto Pessoa recebendo &#8220;Maria&#8221; e idade de 25 e seus atributos estar\u00e3o sendo apresentado no console. Veja:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Pessoa:\n    def __init__(self, nome, idade):\n        self.nome = nome\n        self.idade = idade\n\npessoa1 = Pessoa(\"Maria\", 25)\nprint(pessoa1.nome) # \"Maria\"\nprint(pessoa1.idade) # 25\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2. Objetos de classes mais complexas:<\/h4>\n\n\n\n<p>A classe define um construtor ( init ) para definir os atributos da classe, que neste caso s\u00e3o: marca, modelo, ano e preco do carro. Em seguida, criamos um objeto do tipo &#8220;Carro&#8221; e atribu\u00eddo ao nome &#8220;carro1&#8221;. Por fim, os valores dos atributos do objeto &#8220;carro1&#8221; podem est\u00e1 sendo exibidos no console usando a sintaxe &#8220;carro1.atributo&#8221;, onde nome do atributo desejado assume &#8220;atributo&#8221;. Veja:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Carro:\n    def __init__(self, marca, modelo, ano, preco):\n        self.marca = marca\n        self.modelo = modelo\n        self.ano = ano\n        self.preco = preco\n\ncarro1 = Carro(\"Ford\", \"Fiesta\", 2015, 15000)\nprint(carro1.marca) # \"Ford\"\nprint(carro1.modelo) # \"Fiesta\"\nprint(carro1.ano) # 2015\nprint(carro1.preco) # 15000\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">3. Objetos de listas:<\/h4>\n\n\n\n<p>Agora temos um exemplo que cria uma lista de tr\u00eas elementos: &#8220;Maria&#8221;, 25 e &#8220;Sao Paulo&#8221;. Em seguida, usa um loop&nbsp;<code>for<\/code>&nbsp;para iterar sobre cada elemento da <a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/lista-python\/\">lista<\/a> e imprime cada elemento. A sintaxe&nbsp;<code>for elemento in lista<\/code>&nbsp;significa que a vari\u00e1vel&nbsp;<code>elemento<\/code>&nbsp;ser\u00e1 atualizada a cada itera\u00e7\u00e3o do <a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/for-em-python\/\">loop for<\/a>, correspondendo a cada elemento da lista. Assim, o loop imprime cada valor de&nbsp;<code>elemento<\/code>&nbsp;usando a fun\u00e7\u00e3o&nbsp;<code><strong>print()<\/strong><\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lista1 = &#091;\"Maria\", 25, \"Sao Paulo\"]\n\nfor elemento in lista1:\n    print(elemento)\n\n# Output:\n# Maria\n# 25\n# Sao Paulo<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">4. Objetos de dicion\u00e1rios:<\/h4>\n\n\n\n<p>Esse exemplo cria um dicion\u00e1rio Python com tr\u00eas chaves e valores associados: &#8220;nome&#8221; com o valor &#8220;Maria&#8221;, &#8220;idade&#8221; com o valor 25 e &#8220;cidade&#8221; com o valor &#8220;S\u00e3o Paulo&#8221;. Dessa forma, um loop&nbsp;<code>for<\/code>&nbsp;\u00e9 usado para iterar sobre os itens do dicion\u00e1rio, que s\u00e3o as chaves e valores associados. A sintaxe&nbsp;<code>for chave, valor in <strong>dicionario1.items()<\/strong><\/code>&nbsp;significa que a vari\u00e1vel&nbsp;<code>chave<\/code>&nbsp;ser\u00e1 atualizada a cada itera\u00e7\u00e3o, correspondendo \u00e0 chave do dicion\u00e1rio, e a vari\u00e1vel&nbsp;<code>valor<\/code>&nbsp;ser\u00e1 atualizada com o valor correspondente da chave. O loop imprime cada chave e valor usando as fun\u00e7\u00f5es&nbsp;<code><strong>print()<\/strong><\/code>. O output deste exemplo ser\u00e1 &#8220;nome&#8221;, &#8220;25&#8221; e &#8220;cidade&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dicionario1 = {\"nome\": \"Maria\", \"idade\": 25, \"cidade\": \"Sao Paulo\"}\n\nfor chave, valor in dicionario1.items():\n    print(chave) # \"nome\"\n    print(valor) # 25\n\n# Output:\n# nome\n# 25\n# cidade<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">5. Objetos de classes personalizadas:<\/h4>\n\n\n\n<p>E por ultimo temos o seguinte exemplo criando uma classe &#8220;Animal&#8221; que tem um construtor para definir o nome e a idade do animal. <\/p>\n\n\n\n<p>A classe tamb\u00e9m tem um m\u00e9todo &#8220;falar&#8221; que exibe o nome do animal. Em seguida, criamos a classe &#8220;Cachorro&#8221;, que herda dos atributos e m\u00e9todos da classe &#8220;Animal&#8221;. O construtor da classe &#8220;Cachorro&#8221; adiciona um novo atributo, &#8220;raza&#8221;, e chama o construtor da classe &#8220;Animal&#8221;. Criamos o objeto &#8220;cachorro1&#8221;  como um inst\u00e2ncia da classe &#8220;Cachorro&#8221; e o m\u00e9todo &#8220;falar&#8221; vai est\u00e1 sendo chamado. O m\u00e9todo &#8220;falar&#8221; exibe o nome do animal, que neste caso \u00e9 &#8220;Fido&#8221;. O output deste exemplo ser\u00e1 &#8220;O animal diz: Fido&#8221;. Veja:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Animal:\n    def __init__(self, nome, idade):\n        self.nome = nome\n        self.idade = idade\n\n    def falar(self):\n        print(\"O animal diz:\")\n        print(self.nome)\n\nclass Cachorro(Animal):\n    def __init__(self, nome, idade, raza):\n        super().__init__(nome, idade)\n        self.raza = raza\n\ncachorro1 = Cachorro(\"Fido\", 3, \"Labrador\")\ncachorro1.falar()\n# Output:\n# O animal diz:\n# Fido<\/code><\/pre>\n\n\n\n<p>Esses s\u00e3o apenas alguns exemplos de como o m\u00e9todo&nbsp;init pode est\u00e1 sendo utilizado para inicializar objetos em Python. Nesse sentido, o m\u00e9todo faz parte fundamental da programa\u00e7\u00e3o orientada a objetos e pode est\u00e1 sendo utilizado em muitas classes para definir os atributos e m\u00e9todos de um objeto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Como_o_metodo_init_pode_esta_sendo_utilizado_para_implementar_heranca_em_Python\"><\/span>Como o m\u00e9todo&nbsp;__init__&nbsp;pode est\u00e1 sendo utilizado para implementar heran\u00e7a em Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>O m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;pode est\u00e1 sendo utilizado para implementar a heran\u00e7a em Python, que \u00e9 uma forma de criar classes que herdam comportamentos e atributos de outras classes. Dessa maneira, isso \u00e9 feito criando uma nova classe que herda de uma classe existente sendo utilizado a palavra-chave&nbsp;<code>class<\/code>&nbsp;seguida pelo nome da nova classe e o nome da classe de base entre aspas.<\/p>\n\n\n\n<p>Em seguida, voc\u00ea pode definir os atributos e m\u00e9todos da nova classe dentro da classe de base usando o&nbsp;m\u00e9todo&nbsp;para inicializar os atributos da nova classe. Al\u00e9m disso, voc\u00ea pode sobreescrever os m\u00e9todos da classe de base sendo utilizado a palavra-chave&nbsp;<code>def<\/code>&nbsp;para fornecer novas implementa\u00e7\u00f5es para esses m\u00e9todos na nova classe.<\/p>\n\n\n\n<figure class=\"wp-block-image alignleft size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python-carros-1.png\" alt=\"\" class=\"wp-image-10637\" style=\"width:101px;height:92px\" width=\"101\" height=\"92\" srcset=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python-carros-1.png 529w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python-carros-1-300x271.png 300w\" sizes=\"(max-width: 101px) 100vw, 101px\" \/><\/figure>\n\n\n\n<p><br>Por exemplo, suponha que voc\u00ea queira criar uma classe de autom\u00f3vel que herda de uma classe de ve\u00edculo. Dessa forma, podemos fazer isso da seguinte maneira:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Car(Vehicle):\n  def __init__(self, make, model, year):\n    Vehicle.__init__(self, make, model, year)\n    self.number_of_doors = 4\n    self.color = \"red\"\n\n  def start(self):\n    print(\"Starting the engine...\")<\/code><\/pre>\n\n\n\n<p>Aqui, a classe&nbsp;<code>Car<\/code>&nbsp;herda da classe&nbsp;<code>Vehicle<\/code>&nbsp;e define um novo atributo&nbsp;<code>number_of_doors<\/code>&nbsp;e um novo m\u00e9todo&nbsp;<code><strong>start()<\/strong><\/code>&nbsp;que sobreescreve o m\u00e9todo&nbsp;<code><strong>start()<\/strong><\/code>&nbsp;da classe&nbsp;<code>Vehicle<\/code>.<\/p>\n\n\n\n<p>Assim, podemos est\u00e1 sendo utilizado a nova classe&nbsp;<code>Car<\/code>&nbsp;para criar objetos de carros que herdam comportamentos e atributos da classe&nbsp;<code>Vehicle<\/code>&nbsp;e adicionam novos comportamentos e atributos espec\u00edficos de carros.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Metodos_similares_ao_metodo_init_em_Python\"><\/span>M\u00e9todos similares ao m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;em Python&nbsp;<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Existem alguns m\u00e9todos similares ao m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;em Python que s\u00e3o aplicados para inicializar objetos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>setattr()<\/strong><\/code>: Este m\u00e9todo pode est\u00e1 sendo aplicado para definir atributos de objetos dinamicamente, ou seja, ap\u00f3s a cria\u00e7\u00e3o do objeto. Assim, utilizando o m\u00e9todo para adicionar atributos personalizados a um objeto sem precisar definir um m\u00e9todo de inicializa\u00e7\u00e3o para o objeto. Exemplo:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>class Person:\n  def __init__(self, name, age):\n    self.name = name\n    self.age = age\n\nperson1 = Person(\"John Doe\", 30)\nperson1.setattr(\"age\", 40)\nprint(person1.age) # 40\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code><strong>**kwargs<\/strong><\/code>: Podemos est\u00e1 utilizando este m\u00e9todo para passar par\u00e2metros adicionais para um m\u00e9todo de inicializa\u00e7\u00e3o. E assim, quando criamos um objeto podemos est\u00e1 utilizando o m\u00e9todo para definir valores adicionais para atributos de objetos . Ele \u00e9 opcional e pode est\u00e1 sendo omitido se n\u00e3o precisar de passar par\u00e2metros adicionais. Exemplo:<\/li>\n\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>class Person:\n  def __init__(self, name, age, **kwargs):\n    self.name = name\n    self.age = age\n    self.kwargs = kwargs\n\nperson1 = Person(\"John Doe\", 30, height=180)\nprint(person1.height) # 180\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Dicas_para_escrever_um_codigo_eficiente_com_o_metodo_init_em_Python\"><\/span>Dicas para escrever um c\u00f3digo eficiente com o m\u00e9todo&nbsp;init&nbsp;em Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>O m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;\u00e9 um m\u00e9todo especial em Python que \u00e9 chamado automaticamente ao criar uma nova inst\u00e2ncia de uma classe. Utilizamos esse m\u00e9todo para inicializar a inst\u00e2ncia e pode est\u00e1 sendo utilizada para realizar qualquer a\u00e7\u00e3o antes que a inst\u00e2ncia esteja aplicada. Aqui est\u00e3o algumas dicas para escrever um c\u00f3digo eficiente com o m\u00e9todo&nbsp;init&nbsp;em Python :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Use um argumento do corpo para receber par\u00e2metros de inst\u00e2ncia. Portanto, isso \u00e9 \u00fatil para inicializar atributos com valores que variam entre diferentes inst\u00e2ncias da classe.<\/li>\n\n\n\n<li>Use a palavra-chave&nbsp;<code>self<\/code>&nbsp;para referenciar atributos e m\u00e9todos da classe. Dessa forma, isso \u00e9 necess\u00e1rio em qualquer lugar onde est\u00e1 sendo utilizado&nbsp;<code>self<\/code>, pois&nbsp;<code>self<\/code>&nbsp;\u00e9 uma vari\u00e1vel automatically passada para o m\u00e9todo&nbsp;<code>__init__<\/code>.<\/li>\n\n\n\n<li>Inicialize todos os atributos da classe no m\u00e9todo&nbsp;<code>init<\/code>&nbsp;em vez de est\u00e1 sendo utilizado a palavra-chave&nbsp;<code>default<\/code>. Logo, isso torna o c\u00f3digo mais leg\u00edvel e ajuda a evitar erros de inicializa\u00e7\u00e3o.<\/li>\n\n\n\n<li>Use um bloco&nbsp;<code>try-except<\/code>&nbsp;para lidar com erros de inicializa\u00e7\u00e3o. Assim, isso ajuda a garantir que sua classe seja mais robusta e resiliente.<\/li>\n\n\n\n<li>Use uma lista para inicializar v\u00e1rios atributos da classe. Isso \u00e9 \u00fatil quando voc\u00ea precisa inicializar v\u00e1rios atributos da classe com valores que s\u00e3o semelhantes.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Tendencias_e_novidades_em_relacao_ao_metodo_init_em_versoes_recentes_do_Python\"><\/span>Tend\u00eancias e novidades em rela\u00e7\u00e3o ao m\u00e9todo&nbsp;init&nbsp;em vers\u00f5es recentes do Python.<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>O m\u00e9todo&nbsp;init \u00e9 uma das principais caracter\u00edsticas dos objetos em Python, e recentemente, tem havido algumas tend\u00eancias e novidades em rela\u00e7\u00e3o a ele em vers\u00f5es recentes da linguagem. Nesse sentido, aqui est\u00e3o algumas das principais mudan\u00e7as e tend\u00eancias:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>M\u00e9todo de inicializa\u00e7\u00e3o auto-registado:<\/strong> Em Python 3.8, adicionado um novo m\u00e9todo de inicializa\u00e7\u00e3o auto-registado, que permite que os desenvolvedores defina um m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;para os objetos que ser\u00e1 chamado automaticamente quando criamos um objeto. Assim, isso permite que os desenvolvedores escrevam menos c\u00f3digo e fa\u00e7am objetos mais f\u00e1ceis de est\u00e1 sendo utilizado.<\/li>\n\n\n\n<li><strong>M\u00e9todo de inicializa\u00e7\u00e3o personalizado:<\/strong> Em Python 3.7, adicionado suporte para m\u00e9todos de inicializa\u00e7\u00e3o personalizados, que permite que os desenvolvedores defina um m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;personalizado para seus objetos. Assim, esse m\u00e9todo pode incluir c\u00f3digo adicional para a inicializa\u00e7\u00e3o dos objetos, al\u00e9m do c\u00f3digo padr\u00e3o.<\/li>\n\n\n\n<li><strong>Utiliza\u00e7\u00e3o de decoradores:<\/strong> Decoradores s\u00e3o uma forma de modificar o comportamento de um objeto ou m\u00e9todo, sem alterar o c\u00f3digo fonte. Dessa forma, em Python 3.8, adicionado suporte para decoradores de inicializa\u00e7\u00e3o, que permite que os desenvolvedores adicione behaviors Personalizados a seus objetos durante a inicializa\u00e7\u00e3o.<\/li>\n\n\n\n<li><strong>Utiliza\u00e7\u00e3o de classes gen\u00e9ricas:<\/strong> Em Python 3.8, adicionado suporte para classes gen\u00e9ricas, que permite que os desenvolvedores criem classes que podem est\u00e1 sendo utilizados com diferentes tipos de dados. <\/li>\n\n\n\n<li><strong>M\u00e9todo de inicializa\u00e7\u00e3o est\u00e1tico:<\/strong> Em Python 3.9, adicionado suporte para m\u00e9todos de inicializa\u00e7\u00e3o est\u00e1ticos. Dessa forma, permitindo que os desenvolvedores defina um m\u00e9todo&nbsp;<code>__init__<\/code>&nbsp;est\u00e1tico para seus objetos.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>O m\u00e9todo&nbsp;init do python \u00e9 uma fun\u00e7\u00e3o especial que podemos aplicar para inicializar uma classe. Quando criamos objeto da classe, o m\u00e9todo \u00e9 aplicado automaticamente e definindo comportamento inicial do objeto. Nesse sentido, podemos usar o objeto da classe como um ponteiro para o objeto que est\u00e1 sendo inicializado, acessando atributos e m\u00e9todos da classe [&hellip;]<\/p>\n","protected":false},"author":33,"featured_media":10634,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_helpful_status":1,"_lmt_disableupdate":"","_lmt_disable":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[211],"tags":[],"class_list":["post-10617","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pythondjango"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>init python: Aprenda a usar __init__\u00a0em python | Homehost<\/title>\n<meta name=\"description\" content=\"O m\u00e9todo init python \u00e9 chamado quando um objeto \u00e9 criado e \u00e9 usado para inicializar o objeto com valores iniciais.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"init python: Aprenda a usar __init__\u00a0em python | Homehost\" \/>\n<meta property=\"og:description\" content=\"O m\u00e9todo init python \u00e9 chamado quando um objeto \u00e9 criado e \u00e9 usado para inicializar o objeto com valores iniciais.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Homehost\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Homehost\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-23T15:03:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-02T22:52:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1079\" \/>\n\t<meta property=\"og:image:height\" content=\"721\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sch\u00eania T\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Homehost\" \/>\n<meta name=\"twitter:site\" content=\"@Homehost\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sch\u00eania T\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/\",\"url\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/\",\"name\":\"init python: Aprenda a usar __init__\u00a0em python | Homehost\",\"isPartOf\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python.png\",\"datePublished\":\"2023-08-23T15:03:17+00:00\",\"dateModified\":\"2025-05-02T22:52:02+00:00\",\"author\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa\"},\"description\":\"O m\u00e9todo init python \u00e9 chamado quando um objeto \u00e9 criado e \u00e9 usado para inicializar o objeto com valores iniciais.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#primaryimage\",\"url\":\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python.png\",\"contentUrl\":\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python.png\",\"width\":1079,\"height\":721},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/www.homehost.com.br\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"init python: Aprenda a usar __init__\u00a0em python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#website\",\"url\":\"https:\/\/www.homehost.com.br\/blog\/\",\"name\":\"Homehost\",\"description\":\"Hospedagem De Sites\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.homehost.com.br\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa\",\"name\":\"Sch\u00eania T\",\"description\":\"Cientista de dados, apaixonada por ferramentas de tecnologia e games. Graduanda em Estat\u00edstica pela UFPB. Seu hobby \u00e9 maratonar s\u00e9ries, curtir uma boa m\u00fasica trabalhando ou cozinhando, ir ao cinema e aprender coisas novas! Contato: schenia.blog@homehost.com.br\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"init python: Aprenda a usar __init__\u00a0em python | Homehost","description":"O m\u00e9todo init python \u00e9 chamado quando um objeto \u00e9 criado e \u00e9 usado para inicializar o objeto com valores iniciais.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/","og_locale":"pt_BR","og_type":"article","og_title":"init python: Aprenda a usar __init__\u00a0em python | Homehost","og_description":"O m\u00e9todo init python \u00e9 chamado quando um objeto \u00e9 criado e \u00e9 usado para inicializar o objeto com valores iniciais.","og_url":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/","og_site_name":"Homehost","article_publisher":"https:\/\/www.facebook.com\/Homehost\/","article_published_time":"2023-08-23T15:03:17+00:00","article_modified_time":"2025-05-02T22:52:02+00:00","og_image":[{"width":1079,"height":721,"url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python.png","type":"image\/png"}],"author":"Sch\u00eania T","twitter_card":"summary_large_image","twitter_creator":"@Homehost","twitter_site":"@Homehost","twitter_misc":{"Escrito por":"Sch\u00eania T","Est. tempo de leitura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/","url":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/","name":"init python: Aprenda a usar __init__\u00a0em python | Homehost","isPartOf":{"@id":"https:\/\/www.homehost.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#primaryimage"},"image":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python.png","datePublished":"2023-08-23T15:03:17+00:00","dateModified":"2025-05-02T22:52:02+00:00","author":{"@id":"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa"},"description":"O m\u00e9todo init python \u00e9 chamado quando um objeto \u00e9 criado e \u00e9 usado para inicializar o objeto com valores iniciais.","breadcrumb":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#primaryimage","url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python.png","contentUrl":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python.png","width":1079,"height":721},{"@type":"BreadcrumbList","@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/init-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.homehost.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"init python: Aprenda a usar __init__\u00a0em python"}]},{"@type":"WebSite","@id":"https:\/\/www.homehost.com.br\/blog\/#website","url":"https:\/\/www.homehost.com.br\/blog\/","name":"Homehost","description":"Hospedagem De Sites","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.homehost.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa","name":"Sch\u00eania T","description":"Cientista de dados, apaixonada por ferramentas de tecnologia e games. Graduanda em Estat\u00edstica pela UFPB. Seu hobby \u00e9 maratonar s\u00e9ries, curtir uma boa m\u00fasica trabalhando ou cozinhando, ir ao cinema e aprender coisas novas! Contato: schenia.blog@homehost.com.br"}]}},"modified_by":"ad_hmhst","jetpack_featured_media_url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/init-python.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/10617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=10617"}],"version-history":[{"count":24,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/10617\/revisions"}],"predecessor-version":[{"id":14652,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/10617\/revisions\/14652"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/media\/10634"}],"wp:attachment":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=10617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=10617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=10617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}