Olá Dailton, tudo bem com você?
Peço desculpas pela demora no retorno.
Quando fazemos o uso de uma classe abstrata no Python todas as classes filhas (que herdam) desta classe devem ter os métodos abstratos declarados na sua estrutura.
No exemplo apresentado na aula Mãos na massa para que não seja gerado o erro de tipo (TypeError) devemos implementar todos os métodos abstratos presentes na classe mãe MutableSequence
. A documentação do Python disponibiliza uma lista de quais são esses métodos abstratos que devem ser implementados:
__getitem__
__setitem__
__delitem__
__len__
insert
Como exemplo prático, imagine que temos uma classe abstrata Conta
e essa classe conta possui duas classes filhas Corrente
e Poupanca
, as classes filhas devem possuir os mesmos métodos presentes na classe mãe, sendo deposita
, saca
e extrato
. Para que os métodos sejam de declaração obrigatória, vamos recorrer ao uso de classes abstratas, definindo assim a classe Conta
como abstrata e seus métodos.
Exemplo de código de Classe Abstrata
from abc import ABCMeta, abstractmethod
class Conta(metaclass=ABCMeta):
@abstractmethod
def deposita(self):
pass
@abstractmethod
def saca(self):
pass
@abstractmethod
def extrato(self):
pass
class Corrente(Conta):
def deposita(self):
print("Depositando na conta corrente")
def saca(self):
print("Sacando na conta corrente")
def extrato(self):
print("Extrato da conta corrente")
class Poupanca(Conta):
def deposita(self):
print("Depositando na conta poupança")
def saca(self):
print("Sacando na conta poupança")
def extrato(self):
print("Extrato da conta poupança")
No código acima temos uma representação simplificada das contas do tipo corrente e poupança que utilizamos no dia a dia, onde essas contas são uma derivação da classe mãe Conta
que informa quais as opções (métodos) suas classes filhas devem possuir. E caso não fosse criado nas classe filhas os métodos da classe abstrata mãe, seria retornado TypeError, dizendo a obrigatoriedade de implementar todos os métodos da classe abstrata mãe.
Imagine uma classe abstrata como um contrato que não pode ser quebrado, quem assiná-lo, obrigatoriamente deverá cumprir.
Para aprimorar ainda mais o seu conhecimento sobre classes abstratas, recomendo a leitura do seguinte artigo, nele será apresentado como uma classe abstrata comporta em uma tentativa de instanciação e o erro gerado e como corrigi-lo. Fora isso, também indico a documentação do Python que evidencia quais são os métodos abstratos da classe MutableSequence
:
O artigo acima está em inglês, caso tenha dificuldades com o idioma, recomendo o uso do tradutor do navegador.
Fico à disposição em caso de dúvidas.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!