Classes abstratas em Python: um guia para iniciantes

Uma classe abstrata é um projeto para classes relacionadas. Ele não pode ser instanciado, mas só pode ser acessado por meio de herança. Uma subclasse que herda uma classe abstrata é necessária para implementar seus métodos abstratos. Caso contrário, o compilador sinalizará um erro.

Métodos abstratos são métodos sem implementação. Uma classe abstrata pode ter métodos abstratos ou métodos concretos (normais).

Python não oferece suporte direto a métodos abstratos, mas você pode acessá-los por meio do módulo abc (classe base abstrata).

Usando o módulo abc em Python

Para definir uma classe abstrata em Python, você precisa importar o módulo abc.

Veja o exemplo abaixo:

 from abc import ABC
class AbstractClassName(ABC):
pass

Observe a passagem da palavra-chave. Esta palavra-chave é usada para substituir o código vazio. Deixá-lo de fora resultará em um erro de compilação.

Relacionado: Julia fará uma oferta pelo trono de Python?

Definições de classe, definições de método, loops e instruções if esperam implementações de código. Portanto, deixá-los de fora gera um erro de compilação. Para evitar isso, use pass para substituir o código vazio.

Para definir um método abstrato em Python, use o decorador @abstractmethod :

 from abc import ABC, abstractmethod
class AbstractClassName(ABC):
@abstractmethod
def abstractMethod(self):
pass

Neste ponto, seria bom mencionar que – ao contrário de Java – os métodos abstratos em Python podem ter uma implementação. Essa implementação pode ser acessada no método de substituição usando o método super () .

 import abc
class AbstractClass(ABC):
def __init__(self, value):
self.value = value
super().__init__()
@abc.abstractmethod
def some_action(self):
print("This is the parent implementation.")
class MySubclass(AbstractClassExample):
def some_action(self):
super().some_action()
print("This is the subclass implementation. ")
x = MySubclass()
x.some_action()

É interessante notar que você pode definir um construtor em uma classe abstrata.

Na linha 9, você pode observar que @ abc.abstractmethod foi usado como decorador de método abstrato. Esta é outra maneira de fazer isso diferente da forma anterior. Observe também que a linha 1 é mais curta ( import abc ) do que a importação da linha 1 anterior que você usou.

É tudo uma questão de escolha. Porém, muitos podem achar o segundo método mais curto.

Tratamento de exceções em Python

Observe que não há como capturar erros no exemplo de código fornecido acima. Os bugs ocorrem com mais frequência do que não, e ter uma maneira confiável de obtê-los pode ser uma virada de jogo.

Esses eventos que interrompem o fluxo normal do programa são chamados de "exceções" e seu gerenciamento é chamado de "tratamento de exceções". O próximo passo em sua lista de leitura do Python deve ser o tratamento de exceções.