Trung BìnhPython iconPython

`@dataclass(slots=True)` — memory optimization trong Python 3.10+?

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  # FrozenInstanceError

Dùng @dataclass(slots=True) khi có hàng triệu instances — tiết kiệm ~30-60% memory.

Xem toàn bộ Python cùng filter theo level & chủ đề con.

Mở danh sách Python