Kết hợp __slots__ với @dataclass để có cả type safety và memory efficiency:
python
from dataclasses import dataclass
import sys
@dataclass
class UserNormal:
id: int; name: str; email: str
@dataclass(slots=True) # Python 3.10+
class UserSlots:
id: int; name: str; email: str
print(sys.getsizeof(UserNormal(1, 'Alice', 'a@b.com'))) # ~256 bytes (có __dict__)
print(sys.getsizeof(UserSlots(1, 'Alice', 'a@b.com'))) # ~56 bytes (không có __dict__)
# frozen=True + slots=True — immutable và memory-efficient
@dataclass(frozen=True, slots=True)
class Point:
x: float
y: float
p = Point(1.0, 2.0)
# p.x = 3.0 # FrozenInstanceErrorDùng @dataclass(slots=True) khi có hàng triệu instances — tiết kiệm ~30-60% memory.