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.