Neste tutorial, discutiremos o conceito de abstração em Python para uma abordagem de programação orientada a objetos.
Essencialmente, a abstração se concentra em ocultar as implementações internas de um processo ou método do usuário. Assim, o usuário sabe o que está fazendo, mas não sabe como o trabalho está sendo feito.
& nbsp;
O que é abstração em Python?
Por exemplo, as pessoas não pensam em um carro como uma coleção de milhares de peças individuais. Em vez disso, eles o veem como um objeto bem definido com seu próprio comportamento único. Essa abstração permite que as pessoas conduzam um carro sem ter consciência da complexidade das partes que o compõem. Eles podem ignorar os detalhes da transmissão do motor e dos sistemas de frenagem. Em vez disso, eles podem usar o objeto inteiro.
Uma maneira poderosa de manipular a abstração e o uso de classificação hierárquica. Isso nos permite sobrepor a semântica de sistemas complexos, dividindo-os em partes mais gerenciáveis. Lá fora, o carro é um único objeto. Uma vez dentro, você vê que o carro é composto por vários subsistemas: direção, freios, sistema de áudio, cintos de segurança, etc. Por sua vez, cada um desses subsistemas consiste em blocos menores.
O ponto é que nós dirigimos um carro (ou qualquer outro sistema complexo) usando abstrações hierárquicas.
Isso também pode ser aplicado a programas de computador usando conceitos de POO. Essa é a essência da programação orientada a objetos.
Classes e métodos abstratos em Python
Para declarar uma classe abstrata, primeiro precisamos importar o módulo abc
. Vamos dar uma olhada em um exemplo.
from abc import ABC class abs_class (ABC): #abstract methods
Aqui abs_class
&é um resumo classe dentro da qual métodos abstratos ou quaisquer outros métodos podem ser definidos.
Como uma propriedade, classes abstratas podem ter qualquer número de métodos abstratos, coexistindo com qualquer número de outros métodos. Por exemplo, podemos ver abaixo.
from abc import ABC, abstractmethod class abs_class (ABC): #normal method def method (self): # definição de método @abstractmethod def Abs_method (self): #Abs_method definition
Aqui method()
&método normal, enquanto Abs_method()
&um método abstrato que implementa o @abstractmethod
do módulo abc.
Exemplo
Agora que sabemos sobre classes e métodos abstratos, vamos dar uma olhada em um exemplo.
from abc import ABC, abstractmethod class Absclass (ABC): def print (self, x): print ("Passed value:", x) @abstractmethod def task (self): print ("Estamos dentro da tarefa Absclass") class test_class (Absclass): def task (self): print ("Estamos dentro da tarefa test_class") class example_class (Absclass): def task (self ): print ("Estamos dentro da tarefa example_class") #objeto de test_class criado test_obj = test_class() test_obj.task() test_obj.print (100) #objeto de example_class criado ex ample_obj = example_class() example_obj.task ( ) example_obj .print (200) print ("test_obj é instância de Absclass?", isinstance (test_obj, Absclass)) print ("example_obj é instância de Absclass?", isinstance (example_obj, Absclass))
Saída:
onde,
task()
e o método print()
que são visíveis para o usuário. As outras duas classes herdadas desta classe abstrata são &estas são test_class
e example_class
. Ambos têm seu próprio método task()
(uma extensão de método abstrato).
Depois que o usuário cria objetos das classes test_class e example_class e chama o método task()
para ambos, as definições ocultas do método task()
dentro de ambas as classes entram em jogo. Essas definições estão ocultas do usuário. O método abstrato task()
da classe abstrata Absclass
nunca é realmente chamado.
Mas quando o print()
é chamado como para test_obj e example_obj, o método print()
Absclass é chamado porque não é um método abstrato.
Observação: não podemos instanciar uma classe abstrata . Isso causa um erro.