Python permite que nossas classes possuam outras classes declaradas internamente em seu corpo.
Esse tipo de classe interna ou aninhada possui as mesmas características de uma classe,
exceto pelo seu escopo.
Sintaxe
class nome_classe_externa:
#corpo
class nome_classe_interna:
#corpo
A instanciação de objetos utilizando classes internas é feita utilizando o nome da classe com
escopo mais externo seguido do operador (.).
Sintaxe
nome_objeto = objeto_classe_externa.nome_classe_interna()
Exemplo 5
class classe:
pass
class filha:
pass
#instanciando
obj = classe #classe
obj = classe.filha #classe interna
Saída
-
No exemplo abaixo, declaramos atributos e um método em um classe interna:
Exemplo 6
class classe:
pass
class filha:
atributo1 = 1
atributo2 = 'Teste'
def metodo(p1,p2): #método
print(p1,p2)
#instanciando
obj = classe #classe
obj = classe.filha #classe interna
Saída
-
Classes mais externas, em relação ao escopo, não podem acessar diretamente os recursos de classes internas.
Classes internas, de forma semelhante, não podem acessar diretamente recursos de uma classe mais externa.