syntax
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
example
from collections import namedtuple
Color = namedtuple("Color", ["red", "green", "blue"])
sky = Color(135, 206, 235)
print(sky.red, sky.blue)
print(sky._asdict())
output
135 235
{'red': 135, 'green': 206, 'blue': 235}
Note Named tuples give readable field access while staying immutable. For mutable fields or defaults, consider dataclasses instead.
syntax
from dataclasses import dataclass
@dataclass
class Name:
field: type
example
from dataclasses import dataclass, field
@dataclass
class Product:
name: str
price: float
tags: list[str] = field(default_factory=list)
@property
def display_price(self) -> str:
return f"${self.price:.2f}"
p = Product("Widget", 9.99, ["sale"])
print(p)
print(p.display_price)
output
Product(name='Widget', price=9.99, tags=['sale'])
$9.99
Note Dataclasses auto-generate __init__, __repr__, and __eq__. Use field(default_factory=list) for mutable defaults, never a bare [] as a default.