• Conceitos de P.O.O

Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Entender como criar métodos
  2. Entender como invocar um método
  3. Entender os métodos construtores e destrutores
  4. Entender os métodos com parâmetros e retorno
  5. Entender a sobrecarga de métodos
  6. Entender como declarar e invocar métodos estáticos
  7. Entender uso do self
  8. Entender como criar ponteiros para métodos

Os métodos são funções que nossos objetos intanciados de classes possuem e que estão disponíveis para execução ou uso. Esses métodos ficam acessíveis de acordo com o seus encapsulamentos, público, privado ou protegido.

Tab. 1: Encapsulamento
public private protected
nome-metodo __nome-metodo _nome-metodo
Sintaxe
def nome_metodo(parametros) #público
    #corpo método
def _nome_metodo(parametros) # protegido
    #corpo método
def __nome_metodo(parametros) #privado
    #corpo método
Exemplo 1
class classe:
    def metodo(p):
        print(p)
 
    def _metodo2(p,q):
        print(p,q)
        
    def __metodo3(p,q,r):
        print(p,q,r)    
Saída
-

Os métodos possuem as mesmas características utilizadas pelas funções vistas em Python: Função e também o uso de atributos de métodos.

A chamada dos métodos de nossos objetos é feita utilizando o operador (.) mencionado anteriormente. Abaixo algumas regras para acessar métodos de acordo com o encapsulamento.

  1. Os métodos definidos como private só podem ser invocados internamente.
  2. Os métodos definidos como public podem ser invocados externamente.
  3. Os métodos definidos como protected podem ser invocados internamente e classes filhas.
Sintaxe
nome_objeto.nome_metodo(lista_argumentos)
Exemplo 2
class classe:
    def metodo(p):
        print(p)
    
    def _metodo2(p,q):
        print(p,q)
        
    def __metodo3(p,q,r):
        print(p,q,r)
    
obj = classe
obj.metodo("teste")
obj._metodo2("teste","teste")
obj.__metodo3("teste","teste","teste")
Saída
teste
teste teste
Traceback (most recent call last):
  File "/home/main.py", line 14, in <module>
    obj.__metodo3("teste","teste","teste")
AttributeError: type object 'classe' has no attribute '__metodo3'. Did you mean: '_metodo2'?

Os métodos construtor e destrutor são métodos especiais. O método construtor e invocados automaticamente quando criamos/instanciamos objetos e contém codificação para iniciar atributos de nossas classes.

Em Python, o construtor é identificado com a palavra reservada __init__ tendo seu primeiro parâmetro o self obrigatório como visto na sintaxe abaixo:

Sintaxe: construtor
def __init__(self, lista_parametros):
    #corpo construtor
Exemplo 3
class classe:
    def __init__(self):
        print("__init__")
              
obj = classe()
Saída
__init__

O método destrutor é outro método, não obrigatório, especial que é chamado para liberar os dados utilizados na criação de nossos objetos.

O método destrutor é identificado com a palavra reservada __del__ tendo seu primeiro parâmetro o self obrigatório como visto na sintaxe abaixo:

Sintaxe
def __del__(self):
    #corpo
Exemplo 4
class classe:
    def __init__(self):
        print("__init__")
        
    def __del__(self):
        print("__del__")
        
obj = classe()
Saída
__init__
__del__

Os métodos estáticos são métodos declarados em uma classe utilizando o modificador de acesso @staticmethod de forma a ficar "visíveis" sem que seja necessário instanciar um novo objeto para utilizá-los.

Sintaxe
@staticmethod
def nome_metodo(lista_parametros)
    #corpo

O acesso aos métodos estáticos são feitos utilizando o nome da classe em conjunto com o operador (.) seguido do nome do métodos que desejamos invocar.

Sintaxe
nome_classe.nome_metodo(lista_argumentos)
Exemplo 5
class classe:
    @staticmethod
    def metodo(p):
        print(p)
        
classe.metodo("Teste")
Saída
Teste

  1. 19/09/2024 - revisão 1 - Correção de descrição de métodos 'Construtor' e 'Destrutor'; ajustes gramaticais; outros ajustes
  2. 20/02/2024 - versão inicial