Python › Dataclasses & NamedTuples

How do you specify default values for dataclass fields, and what ordering restriction applies?

Intermediate

Answer

Assign a default value directly after the type annotation, exactly like a regular function parameter default — and just like function parameters, any field WITH a default must come AFTER all fields WITHOUT one, or Python raises a TypeError at class definition time.
@dataclass
class User:
    name: str          # required, no default
    role: str = "user"  # has a default, must come after required fields

u = User("Sam")
print(u.role)  # 'user'
Real-world example Defining sensible default values for optional configuration fields on a dataclass, like a default role or status.

Common follow-ups: What error occurs if you try to declare a field WITHOUT a default AFTER one that HAS a default?