Interfaces y Abstract Base Class (ABC)

ABC y colecciones


Python incluye un módulo llamado collections.abc que proporciona interfaces predefinidas para estructuras de datos como listas, conjuntos, diccionarios, etc.

Por ejemplo, puedes extender collections.abc.Set para crear tu propia clase tipo conjunto:

from collections.abc import Set

class MiSet(Set):
    def __init__(self, datos):
        self._datos = set(datos)

    def __contains__(self, item):
        return item in self._datos

    def __iter__(self):
        return iter(self._datos)

    def __len__(self):
        return len(self._datos)

Al hacer esto, obtienes comportamientos heredados automáticamente, como la capacidad de usar operadores | (unión), & (intersección), entre otros.