ثلاثة نماذج للأنواع في Python
تمتلك Python ثلاثة مناهج رئيسية للهياكل البيانية المكتوبة بالأنواع. dataclass (من المكتبة القياسية) يولّد صنفًا مع __init__ و__repr__ وتلميحات الأنواع — النهج الأكثر قابلية للنقل إذ لا يتطلب تبعيات خارجية. TypedDict (وحدة typing) يصف شكل قاموس دون إنشاء صنف جديد — مُفضَّل عند العمل مع كود يتوقع قواميس عادية. Pydantic BaseModel يضيف التحقق في وقت التشغيل والتسلسل وتوليد مخطط JSON — المعيار الذهبي لنماذج API وإدارة الإعدادات.
يستنتج المحوّل أنواع Python من JSON: سلاسل JSON تُحوَّل إلى str والأرقام بدون عشريات إلى int والأرقام بعشريات إلى float والقيم المنطقية إلى bool وnull إلى None (ونوع الحقل إلى Optional[T]) والكائنات المتداخلة إلى صنف متداخل والمصفوفات إلى list[T]. للمصفوفات بعناصر أنواع مختلطة يصبح نوع العنصر Union.
تولّد الكائنات المتداخلة تعريفات أصناف منفصلة تُوضع فوق الصنف الذي يرجع إليها محترمةً قواعد المراجع الأمامية في Python.
ميزات Pydantic الخاصة
عند اختيار مخرجات Pydantic يستخدم المولّد pydantic.BaseModel كصنف أساسي ويضيف تعليقات Field() للقيم الافتراضية والأوصاف حيث تشير إليها بنية JSON. تُستخدم صياغة Pydantic v2 افتراضيًا (model_config = ConfigDict(...)) مع مفتاح تبديل لتوافق v1 (class Config).
أسماء الحقول التي هي كلمات محجوزة في Python أو تحتوي على أحرف غير مشروعة في المعرّفات (شرطات أو مسافات أو نقاط) تُعاد تسميتها تلقائيًا باصطلاحات snake_case مع إضافة وسيط alias= حتى تتمكن Pydantic من تحليل مفتاح JSON الأصلي.
يُنتَج خيار model_config populate_by_name=True افتراضيًا حتى تتمكن نماذج Pydantic من إنشاء مثيلات إما بالاسم المستعار (المطابق لـ JSON) أو باسم الحقل في Python وهو السلوك الأكثر مرونة لكود عميل API.
سير العمل والتكامل
الصق أي استجابة JSON من API واحصل فورًا على أصناف Python مكتوبة بالأنواع يمكنك وضعها في مسار FastAPI أو مُسلسِل Django REST Framework أو نص معالجة بيانات.
عند استكشاف مجموعة بيانات جديدة يجعل توليد أصناف مكتوبة بالأنواع أولًا الكود اللاحق أكثر أمانًا وقابلية للقراءة. تُقدّم بيئات مثل PyCharm وVS Code الإكمال التلقائي والتحقق من الأنواع مقابل الأنواع المولّدة.
تستفيد خطوط بيانات هندسة البيانات من نماذج Pydantic مع التحقق الصارم: أي سجل لا يتوافق مع المخطط يرفع ValidationError مبكرًا في الخط بدلًا من الفشل بصمت في مرحلة لاحقة.