Dovresti usare gli slot? Come gli slot influenzano la tua classe e quando e come usarli

Usare gli slot e il loro impatto sulla tua classe quando e come utilizzarli

Una riga di codice per un aumento delle prestazioni del 20%?

(immagine di Sébastien Goldberg su Unsplash)

Le slot sono un meccanismo che ti permette di dichiarare gli attributi di una classe e di limitare la creazione di altri attributi. Stabilisci quali attributi ha la tua classe, impedendo ai programmatori di aggiungere nuovi attributi dinamicamente. Questo generalmente porta a un aumento delle prestazioni del 20%.

Le slot sono particolarmente vantaggiose nei programmi in cui hai un gran numero di istanze di classe con un insieme noto di attributi. Pensate a un videogioco o a una simulazione fisica; in queste situazioni si monitora un gran numero di entità nel tempo.

Puoi aggiungere le slot alla tua classe aggiungendo una singola riga di codice, ma è sempre una buona idea? In questo articolo vedremo il perché e il come utilizzare le slot per rendere le tue classi molto più veloci e quando usarle. L’obiettivo generale è comprendere meglio come funzionano le interne delle classi in Python. Facciamo del codice!

Le slot rendono le classi Python più veloci

Puoi migliorare l’uso della memoria e le prestazioni di una classe rendendola utilizzare le slot. Una classe con le slot occupa meno memoria ed esegue più velocemente.

Come faccio a far usare le slot alla mia classe?

Dire a Python di far usare le slot a una classe è molto semplice. Basta aggiungere un attributo speciale chiamato __slots__ che specifica i nomi di tutti gli altri attributi:

class Persona:  first_name:str  last_name:str  age:int    __slots__ = ['first_name', 'last_name', 'age']    # <-- this adds slots  def __init__(self, first_name:str, last_name:str, age:int):    self.first_name = first_name    self.last_name = last_name    self.age = age

Nella classe sopra vediamo che Persona ha tre attributi: first_name, last_name e age. Possiamo dire a Python che vogliamo che la classe Persona utilizzi le slot aggiungendo l’attributo __slots__. Questo attributo deve specificare i nomi di tutti gli altri attributi.