• Conceitos de P.O.O

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

  1. Classe anônima
  2. Atributo
  3. Método
  4. Usando Dictionary, list e tuple
  5. Uso de type e isstanceof
  6. propriedades
  7. herança
  8. issubclass

Os assuntos Classe, atributos, métodos e coleções foram vistos respectivamente em suas seções Classe, Atributos Método e Coleções.

Classes anônimas são classes criadas dinamicamente para uso rápido e pontual dentro de funções, métodos, testes unitários, callbacks e etc. Em python, para declararmos esse tipo de classe, seguimos a sintaxe a seguir:

Sintaxe
nome_classe = type(name, bases, dict)
Onde
name: nome da classe
bases: tupla contendo classe base. () se for classe derivada
dict: dicionario contendo chave-valor que definem os atributos e métodos.
Exemplo 1
#classe anonima simples
classe_anonima=type('classe_anonima', (object,), {})

#instancia
obj = classe_anonima()

#tipo
print(type(obj))
Saída
<class '__main__.classe_anonima'>

A adição de um ou mais atributos em uma classe anônima é feita no formato chave-valor como mostrado na sintaxe abaixo:

Sintaxe
nome_classe=type('nome_classe', (object,), {
  'nome_campo1': valor,
  'nome_campoN': valorN
})
Exemplo 2
classe_anonima = type('classe_anonima',(object,),
{
    'campo1':5,
    'campo2':"string"
})
obj = classe_anonima()
print(type(obj))
print('campo1:',obj.campo1())
Saída
<class '__main__.classe_anonima'>
campo1: 5

A adição de métodos pode ser feito via expressão lambda como mostrado na sintaxe baixo:

Sintaxe
nome_classe=type('nome_classe',(object,),
{
   'nome_metodo': expressao_lambda
}
Exemplo 3
classe_anonima=type(‘nome_classe’,(object,), 
{
   'metodo': lambda a,b: a + b
}

obj = classe_anonima()
print(obj.metodo(1,2))
Saída
3

Funções também podem ser utilizadas sendo associadas aos métodos declarados em uma classe anônima.

Sintaxe
nome_classe=type('nome_classe',(object,),
{
   'nome_metodo': nome_funcao
}
Exemplo 4
def funcao(self,a,b):
    return a + b

classe_anonima = type('classe_anonima',(object,),
{
  'metodo': funcao #atribuição de função
})

obj = classe_anonima()
print(obj.metodo(1,2))
Saída
3

A sintaxe para criação de classes anônimas possibilita que campos sejam iniciados a partir de listas, tuplas e dicionário como mostrado no exemplo abaixo:

Exemplo 5
classe_anonima = type('classe_anonima',(object,),{
  'campo1': [1,2,3,4,5], #list
  'campo2':(2,3,4), #tuple
  'campo3': {0:'str0',1:'str1',2:'str2'} #dictionary
})

obj = classe_anonima()

print(obj.campo1[0])
print(obj.campo2[1])
print(obj.campo3[2])
Saída
1
3
str2

Para checar o tipo de dado da um objeto da classe anônima, utilizamos um função nativa type:

Sintaxe
type(object)
Exemplo 6
class minha_classe:
    pass

#classe anonima simples
classe_anonima = type('classe_anonima', (object,), {})

#instancia
obj = classe_anonima()

#tipo
print(type(obj))
Saída
class '__main__.classe_anonima'>

Parar verificar ou checar se um objeto possui é de um tipo específico de classe, utilizamos a função nativa isinstance:

Sintaxe
isinstance(object, classinfo)
Onde
object: objeto para verificar
classinfo: nome da classe para verificação
Retorno
True se object é do tipo classinfo. False caso contrário
Exemplo 7
class minha_classe:
    pass

#classe anonima simples
classe_anonima = type('classe_anonima', (object,), {})

if isinstance(classe_anonima, minha_classe):
    print("classe_anonima é do tipo minha_classe")
else:
    print("classe_anonima não é do tipo minha_classe")
Saída
classe_anonima não é do tipo minha_classe
  1. 12/09/2025 - revisão 1 - Ajustes: pontuais, 'bases'/numeração em Exemplos, sintaxes e objetivos'
  2. 10/06/2025 - versão inicial