Python
Валидация данных через dataclass
Типизированные структуры с проверкой в __post_init__ и сериализацией в словарь.
Код
from dataclasses import asdict, dataclass, field
from datetime import date
@dataclass(slots=True)
class User:
username: str
email: str
age: int = 0
tags: list[str] = field(default_factory=list)
registered: date = field(default_factory=date.today)
def __post_init__(self):
if "@" not in self.email:
raise ValueError(f"Некорректный email: {self.email}")
if not 0 <= self.age < 130:
raise ValueError(f"Некорректный возраст: {self.age}")
self.username = self.username.strip().lower()
def to_dict(self):
data = asdict(self)
data["registered"] = self.registered.isoformat()
return data
user = User(" Ivan ", "ivan@example.com", 30, ["python", "django"])
print(user.to_dict())