Trung BìnhPython iconPython

`@dataclass` là gì? Lợi ích so với class thường?

@dataclass tự động generate __init__, __repr__, __eq__ — giảm boilerplate đáng kể.

python
from dataclasses import dataclass, field
from typing import List

@dataclass
class User:
    name: str
    email: str
    age: int = 0
    tags: List[str] = field(default_factory=list)
    # __init__, __repr__, __eq__ tự động được generate!

@dataclass(frozen=True)  # Immutable như tuple
class Point:
    x: float
    y: float

p = Point(1.0, 2.0)
# p.x = 3.0  # FrozenInstanceError

Ưu điểm so với namedtuple: có default values, methods, mutable (nếu không frozen).

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

Mở danh sách Python