python-dataclass-validation.py
from dataclasses import dataclass, field
@dataclass
class Product:
name: str
price: float
tags: list[str] = field(default_factory=list)
def __post_init__(self):
self.name = self.name.strip()
if not self.name:
raise ValueError("name is required")
if self.price < 0:
raise ValueError("price cannot be negative")
print(Product(" Notebook ", 4.5, ["paper"]))
try:
Product("Pen", -1)
except ValueError as exc:
print("rejected:", exc)