Clases base abstractas en Python
Las ABC declaran la interfaz y se niegan a instanciarse hasta que se cumple.
from abc import ABC, abstractmethod
class Revision(ABC):
@abstractmethod
def passes(self, texto: str) -> bool:
...
def describe(self) -> str:
return f"{type(self).__name__.lower()} (revisión)"
class LargoMinimo(Revision):
def __init__(self, piso):
self.floor = piso
def passes(self, texto):
return len(texto) >= self.floor
print(LargoMinimo(3).passes("ada"), LargoMinimo(3).describe())
try:
Revision()
except TypeError as exc:
print(str(exc)[:48])
Cómo funciona
abstractmethodmarca lo que una subclase debe proveer.- Instanciar una subclase incompleta lanza TypeError.
- Un método concreto en la ABC es comportamiento compartido.
Palabras clave y builtins usados aquí
asboolclassdefexceptlenprintreturnselfstrtrytype
El intento, en números
- Líneas
- 25
- Caracteres a escribir
- 455
- Tokens
- 136
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 74 segundos.
Paso 1 de 3 en Maquinaria de clases; paso 35 de 53 en Python pythónico.