Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

O que exatamente é uma interface e o que são ABC's?

Não consegui entender ainda o que seria uma interface no Python e para que servem. Além disto, o que são as classes ABC?

1 resposta
solução!

As classes ABC (Abstract Base Classes) tem dois propósitos: agir como um contrato (interface) e bloquear a criação de instâncias/objetos dessa classe.

A parte do contrato (interface) é para você forçar com que tenha a implementação de certos métodos e propriedades. Assim você garante que vai ter tudo o que estava prevendo.

A parte de não instanciar, é por como classes abstratas funcionam na maioria das linguagens de programação. Classes abstratas são só usadas como classes base para serem estendidas por outras classes.

Aqui está um exemplo simples mostrando o contrato e o bloqueio:

from abc import ABC, abstractmethod

class Test(ABC):
    def foo(self):
        pass

    @abstractmethod
    def bar(self):
        pass


class Foo(Test):
    pass


class Bar(Test):
    def bar(self):
        pass


bar = Bar()
# foo = Foo() # descomente para ver o erro por causa do contrato
# test = Test() # descomente para ver o erro por causa do bloqueio

Pode ler mais sobre elas aqui: https://docs.python.org/3/library/abc.html