تبدیل واحد یا حالت Strict

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/09/15
  • تعداد بازدید: 3

در Pydantic دو مفهوم مهم وجود دارد که نحوه اعتبارسنجی داده‌ها را مشخص می‌کند: Correction Mode و Strict Mode. این دو تعیین می‌کنند که هنگام دریافت ورودی، Pydantic چه‌قدر سخت‌گیر باشد و آیا داده‌ها را اصلاح (convert) کند یا خیر.

۱. Correction Mode (حالت اصلاح یا تبدیل خودکار)

در حالت پیش‌فرض، Pydantic رفتار جهان‌واقعی دارد؛ یعنی تلاش می‌کند داده‌ها را تا حد امکان اصلاح و تبدیل کند تا مدل معتبر ساخته شود.

نمونه رفتار Correction Mode:

  • رشته "123" را به عدد 123 تبدیل می‌کند.
  • عدد 1 را به True تبدیل می‌کند.
  • عدد 0 را به False تبدیل می‌کند.
  • رشته تاریخ مانند "2024-01-01" را به datetime تبدیل می‌کند.

from pydantic import BaseModel

class User(BaseModel):
    age: int
    active: bool

User(age="25", active="true")  # ورودی اصلاح می‌شود

در مثال بالا، با اینکه داده‌ها رشته هستند، Pydantic آن‌ها را به نوع صحیح تبدیل می‌کند. این موضوع کار با ورودی‌هایی مثل JSON، فرم‌ها و APIها را آسان‌تر می‌کند.

۲. Strict Mode (حالت سخت‌گیر)

در حالت strict، Pydantic هیچ‌گونه تبدیل نوعی (type coercion) انجام نمی‌دهد. یعنی داده باید دقیقاً همان نوع تعریف‌شده باشد، در غیر این صورت خطا صادر می‌شود.

رفتار Strict Mode:

  • "123" به int تبدیل نمی‌شود → خطا
  • "true" به bool تبدیل نمی‌شود → خطا
  • "2024-01-01" به datetime تبدیل نمی‌شود → خطا

from pydantic import BaseModel, StrictInt, StrictBool

class User(BaseModel):
    age: StrictInt
    active: StrictBool

User(age="25", active="true")  # ❌ خطا

در Pydantic v2 امکان فعال‌سازی سخت‌گیری برای کل مدل نیز وجود دارد:


class User(BaseModel, strict=True):
    age: int
    active: bool

User(age="25")  # ❌ خطا

جدول مقایسه Correction Mode و Strict Mode

ویژگی Correction Mode Strict Mode
تبدیل رشته به عدد بله خیر
تبدیل رشته به بولین بله خیر
تبدیل خودکار تاریخ انجام می‌شود خطا
مناسب برای ورودی‌های API غیرقابل‌اعتماد بله بله، با کنترل بیشتر
سخت‌گیری بالا کم زیاد

نتیجه‌گیری:
به طور کلی:

  • Correction Mode مناسب زمانی است که ورودی‌ها ممکن است دقیق نباشند و نیاز به تبدیل داشته باشند.
  • Strict Mode زمانی مفید است که می‌خواهید ورودی دقیقاً مطابق نوع تعریف‌شده باشد و حتی کوچک‌ترین عدم تطابق را رد کنید.

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد
0/600

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.