Enviar um café pro programador

Métodos, Método __ init __ e Atributos em Python

Neste tutorial, vamos aprender como criar nossos próprios métodos em Python, conhecer melhor o método __init__ e atributos em Programação Orientada a Objetos.

Tutorial anterior: Como criar Classes e Objetos

Métodos em Classes: __init__


A regra para se criar uma classe é simples e você já conhece, se cria do mesmo jeito que se cria uma função em Python: instrução def, nome da função, parêntesis (com parâmetros ou não), dois pontos e o código que vai ser executado.

No tutorial passado, onde ensinamos como criar classes e objetos, usamos um método muuuuito especial, o __init__

Esse método é especial porque é, geralmente, o primeiro definido em toda classe.
O motivo de ser especial é que ele sempre é executado quando criamos uma instância de um objeto.

Automaticamente o Python invoca o __init__() quando você cria um objeto.

O parâmetro self em Python

Como explicamos, o código da classe é apenas um molde dos objetos, uma forma.
Não existem especificamente uma classe. Um objeto sim, existe especificamente.

E é em cada objeto, específica e unicamente, que os métodos vão atuar, e é por isso que o método self é necessário em cada método de uma classe, pra simbolizar que estamos operando em uma informação de objeto, especificamente.


self, em inglês, quer dizer auto, própria, ele mesmo.
Ou seja, se refere aquele objeto, em específico.

Pode criar 1 trilhão de objetos de uma mesma classe. Mas o self se refere aquele objeto específico, ok ? Quando um método executa, ele precisa saber em qual destes objetos existentes ele vai precisar atuar.

Como Criar e Acessar Atributos em Python

Ok, já vimos um método em ação em POO, o __init__ (que como veremos mais a frente, é um método construtor).

Mas as classes também encapsulam outra coisa importante além de métodos, os atributos, que nada mais são que informações, variáveis onde iremos armazenar dados.


Por exemplo, vamos criar o atributo portas e inicializar com o valor 2.
Se criamos um objeto de nome Celta e ele tem um atributo chamado portas, acessamos esse atributo através de ponto, assim:
  • Celta.portas

Se tem um atributo chamado motor num classe de onde instanciamos o objeto BMW, acessamos os dados desse motor assim:
  • BMW.motor

Vejamos um exemplo:

class Carro:
 portas = 4
 
 def __init__(self):
  print("Carro criado")
 
corolla = Carro()
print("Numero de portas:", corolla.portas)

Rodando, o resultado vai ser:

Método e atributos em Python

Bem simples e intuitivo, não?
Se puxar pela memória, já usamos o atributo pi da math, em nossos exercícios da seção básica: math.pi, embora seja um pouco diferente pois math é um módulo, mostra a lógica de usar o ponto.

math.pi = quero usar a variável pi que está em math
corolla.portas = quero usar a variável portas que está no objeto corolla

Como Criar um Método

Aprendemos que a função interna de uma classe, chamada __init__ é um método, que por definição, é executada sempre que instanciamos um objeto.

Porém, é possível também criar nossos próprios métodos.
A recomendação é que você crie métodos para trabalhar com os dados da própria Classe, eles servem para moldar e definir o comportamento dos objetos.

Por exemplo, vamos criar o método exibePortas()
Ela simplesmente retorna o valor de portas do carros, veja como fica nosso código:
class Carro:
 portas = 3
 def __init__(self):
  print("Carro criado")

 def exibePortas(self):
  return self.portas
 
veloster = Carro()
print("Numero de portas:",veloster.exibePortas())
Note que o primeiro parâmetro de todo método, é self.
Se quiser retornar um atributo de uma classe, também use o self:
self.portas

Sempre, ok?

E para invocar o método exibePortas(), do objeto veloster, use o ponto também:
veloster.exibePortas()

Embora esse método receber o parâmetro self, você não precisa enviar nenhum argumento para este parâmetro.

No próximo tutorial vamos aprender como usar mais parâmetros e argumentos, para criar métodos mais interessantes.

6 comentários: