typestar

__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

  1. Las instancias tienen almacenamiento fijo: un error de tipeo lanza en vez de quedarse guardado.
  2. Ahorra memoria real cuando tienes muchos objetos pequeños.
  3. Las subclases necesitan sus propios slots para conservar el beneficio.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 3 en Atributos y descriptores; paso 32 de 53 en Python pythónico.

← Anterior Siguiente →