Interfaces y Abstract Base Class (ABC)

Clases virtuales


Las clases virtuales permiten declarar que una clase concreta "cumple" con una interfaz, sin necesidad de heredar de ella directamente. Esto se hace mediante el método register().

from abc import ABC

class Mando(ABC):
    pass

class ControlUniversal:
    def encender(self): pass
    def cambiar_canal(self, canal): pass
    def subir_volumen(self): pass
    def bajar_volumen(self): pass

Mando.register(ControlUniversal)

print(issubclass(ControlUniversal, Mando))  # True
print(isinstance(ControlUniversal(), Mando))  # True

Este mecanismo permite una mayor flexibilidad al trabajar con código de terceros o interfaces múltiples, pero no fuerza la implementación de métodos como las interfaces formales.