در این بخش انواع مختلف فیلدها در Pydantic را بر اساس ماژول typing بررسی میکنیم. این دستهبندی نشان میدهد که چگونه Pydantic از type hintهای پایتون برای تشخیص و اعتبارسنجی دادهها استفاده میکند.
انواع فیلدهای مبتنی بر typing:
| نوع تایپینگ | نمونه تعریف | کاربرد |
|---|---|---|
| List | tags: list[str] |
تعریف لیستی از یک نوع مشخص |
| Tuple | coords: tuple[int, int] |
تعریف مجموعهای با طول و نوع ثابت |
| Dict | settings: dict[str, int] |
دیکشنری با نوع کلید و مقدار مشخص |
| Set | items: set[str] |
مجموعهای از مقادیر غیرتکراری |
| Union | value: int | str |
فیلدی که میتواند چند نوع مختلف داشته باشد |
| Literal | status: Literal["on", "off"] |
محدود کردن مقدار به یک لیست ثابت از گزینهها |
| Annotated | age: Annotated[int, "positive"] |
افزودن متادیتا یا محدودیتها (در v2 پشتیبانی بهینه شده) |
| Optional | middle: Optional[str] |
نوعی که میتواند None نیز باشد |
| Any | data: Any |
پذیرش هر نوع داده بدون محدودیت |
| Callable | handler: Callable[[int], str] |
یک تابع با ورودی و خروجی مشخص |
| TypedDict | Config: TypedDict |
ساخت دیکشنری با فیلدهای تایپشده |
| Enum | role: UserRole |
مقدار محدود به گزینههای Enum |
| Model Nested | profile: Profile |
یک مدل دیگر را بهعنوان فیلد قرار میدهد |
مثال کلی از استفاده انواع typing در یک مدل:
from typing import list, dict, tuple, set, Union
from datetime import datetime
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
tags: list[str]
coords: tuple[int, int]
settings: dict[str, int]
permissions: set[str]
value: int
این ساختار نشان میدهد که Pydantic قدرت خود را از سیستم تایپینگ پایتون میگیرد و با همین تایپها میتواند مدلهای دقیق، خوانا و قابل اعتبارسنجی ایجاد کند.