__slots__ en Python
Declarar los atributos por adelantado elimina el dict por instancia.
class Punto:
__slots__ = ("x", "y")
def __init__(self, x, y):
self.x = x
self.y = y
p = Punto(1.5, 2.5)
print(p.x, p.y, Punto.__slots__)
try:
p.z = 3
except AttributeError as exc:
print("rechazado:", exc)
print(hasattr(p, "__dict__"))
Cómo funciona
- Las instancias tienen almacenamiento fijo: un error de tipeo lanza en vez de quedarse guardado.
- Ahorra memoria real cuando tienes muchos objetos pequeños.
- Las subclases necesitan sus propios slots para conservar el beneficio.
Palabras clave y builtins usados aquí
asclassdefexcepthasattrprintselftry
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 238
- Tokens
- 87
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 50 segundos.
Paso 1 de 3 en Atributos y descriptores; paso 32 de 53 en Python pythónico.