dataclass vs namedtuple: Quando Usare Cosa in Python
dataclass vs namedtuple: Quando Usare Cosa in Python
Quando usarlo
Serve una struttura dati semplice per raggruppare informazioni correlate? namedtuple è perfetto per dati immutabili e leggeri come coordinate o record di database. dataclass è ideale quando serve mutabilità, metodi personalizzati, o type hints avanzati per dati più complessi.
Snippet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from collections import namedtuple
from dataclasses import dataclass
# namedtuple - immutabile e veloce
Point = namedtuple('Point', ['x', 'y'])
p1 = Point(10, 20)
print(p1.x, p1.y) # 10 20
# dataclass - mutabile e flessibile
@dataclass
class Person:
nome: str
età: int
email: str = "non specificata"
def is_adult(self) -> bool:
return self.età >= 18
marco = Person("Marco", 25)
marco.età = 26 # mutabile!
Perché funziona
namedtuple crea una sottoclasse di tuple con nomi per gli attributi, garantendo immutabilità e prestazioni ottimali. dataclass genera automaticamente __init__, __repr__, __eq__ e altri metodi magici, riducendo il boilerplate. Supporta type hints nativamente e permette metodi personalizzati mantenendo la semplicità.
Attenzione a…
namedtupleè immutabile - usa._replace()per “modificare” valoridataclassdi default è mutabile - aggiungifrozen=Trueper immutabilitànamedtupleoccupa meno memoria,dataclassè più flessibile
Vedi anche
typing.NamedTupleper namedtuple con type hintsattrslibrary per funzionalità avanzate- Documentazione dataclasses
This post is licensed under CC BY 4.0 by the author.