AzLearn

type hints و dataclasses

Type Hints & dataclasses

مفهوم ~22 دقيقة

Type Hints و dataclasses

تلميحات الأنواع (Type Hints) وصفت بها Python عام 2015 (PEP 484) طريقة لتوثيق الأنواع المتوقعة مباشرةً في الكود. لا تُنفَّذ عند التشغيل — Python تتجاهلها — لكنها تُساعد أدوات مثل mypy وPyCharm في اكتشاف الأخطاء قبل التشغيل. و@dataclass هو مُزخرف يُولّد كوداً متكرراً لك.

التلميحات الأساسية — Basic Type Hints

main.go

التلميحات وثيقة حية في الكود — أوضح بكثير من تعليق منفصل مثل # a هو int.

Optional — القيم الاختيارية

main.go

Optional[X] يعني أن القيمة إما X أو None. استخدمه دائماً عندما يمكن للدالة أن تُرجع None.

List، Dict، Tuple، Set

main.go

Union — أنواع متعددة

main.go

@dataclass — فئات البيانات

كتابة فئة بسيطة لتخزين بيانات تتطلب كوداً متكرراً: __init__، __repr__، __eq__. @dataclass يُولّد كل ذلك تلقائياً.

main.go

@dataclass — الميزات المتقدمة

main.go

field(default_factory=list) ضروري للحقول القابلة للتغيير (lists, dicts) — لا تستخدم orders: List[str] = [] مباشرةً لأن القائمة ستُشارَك بين جميع الكائنات.

frozen=True — كائنات غير قابلة للتعديل

main.go

mypy — فحص الأنواع

التلميحات لا تُنفَّذ عند التشغيل. mypy هو أداة مستقلة تفحص الأنواع قبل التشغيل:

pip install mypy
mypy your_script.py

سيكتشف mypy أخطاء مثل:

  • تمرير str حيث تُتوقع int
  • استخدام قيمة Optional دون التحقق من None
  • نسيان return في دالة تُرجع قيمة
تحدي — Challenge