تبسيط الاستيرادات في بايثون: كيفية الاستيراد حسب الفئة، وليس الملف

عند العمل مع بايثون، وخاصة في المشاريع الأكبر، يصبح إدارة الاستيرادات بشكل فعال أمرًا بالغ الأهمية. قد تجد نفسك ترغب في الوصول إلى الفئات مباشرة من حزمها بدلاً من ملفاتها المعنية. يمكن أن تجعل هذه الطريقة كودك أنظف وأسهل في القراءة. في منشور المدونة هذا، سنتناول كيفية تحقيق ذلك في مشاريع بايثون الخاصة بك بهيكل بسيط.

المشكلة

افترض أن لديك هيكل الملفات التالي لتطبيق بايثون الخاص بك:

app/
  app.py
  controllers/
    __init__.py
    project.py
    plugin.py

في هذه الحالة، إذا قمت بتعريف فئة Project في project.py، سيكون استيرادها في app.py تقليديًا بهذا الشكل:

from app.controllers.project import Project

ومع ذلك، ماذا لو كنت ترغب في أن تكون جملة الاستيراد أقصر وأكثر وضوحًا؟ قد ترغب في استيرادها بهذه الطريقة:

from app.controllers import Project

هذا لا يبسط فقط جمل الاستيراد الخاصة بك ولكنه يحتفظ أيضًا بمظهر قاعدة بياناتك أكثر تنظيمًا. تبرز هنا السؤال: كيف يمكنك إعداد ذلك؟

الحل

لتبسيط عملية الاستيراد الخاصة بك والسماح باستيراد الفئات مباشرة من حزمة، تحتاج إلى إجراء تعديل طفيف في ملف __init__.py الموجود في دليل controllers.

دليل خطوة بخطوة

  1. افتح ملف __init__.py: يُستخدم هذا الملف عادةً لت初始化 حزمة بايثون الخاصة بك ويسمح لك بالتحكم فيما يتم استيراده عند استيراد الحزمة نفسها.

  2. أضف جملة الاستيراد: للسماح باستيراد فئة Project مباشرة من controllers، أضف السطر التالي إلى ملف __init__.py الخاص بك:

    from project import Project
    

    هذا يخبر بايثون باستيراد فئة Project من project.py تلقائيًا عند استيراد حزمة controllers.

  3. ضبط الاستيرادات المطلقة: مع إدخال بايثون 2.7 وما بعدها، تصبح الاستيرادات المطلقة الوضع الافتراضي للاستيرادات. لتجنب الصراعات المحتملة مع وحدة على المستوى الأعلى قد تتشارك في الاسم عن غير قصد (مثل project)، من المفيد تضمين نقطة للإشارة إلى استيراد نسبي. وبالتالي، ستقوم بتعديل الاستيراد في __init__.py إلى:

    from .project import Project
    

    هذا يوضح أن الفئة Project يتم استيرادها من الحزمة الحالية (controllers).

النقاط الرئيسية

  • من خلال تعديل ملف __init__.py، يمكنك تبسيط استيراداتك بشكل كبير.
  • استخدام النقطة (.) أمام اسم الوحدة يضمن أنك تشير إلى الوحدة الصحيحة، وهو أمر مفيد بشكل خاص في التطبيقات الأكبر مع إمكانية وجود صراعات في الأسماء.
  • هذه الممارسة لا تعزز فقط قابلية قراءة الكود الخاص بك، ولكنها تساعدك أيضًا في الحفاظ على هيكل واضح مع توسع مشروعك.

الخاتمة

باتباع الخطوات البسيطة الموضحة أعلاه، يمكنك تعزيز ممارسات البرمجة الخاصة بك في بايثون من خلال جعل الاستيرادات أكثر وضوحًا. لا توفر هذه التقنية الوقت فحسب، بل تساهم أيضًا في كود نظيف وقابل للصيانة. تذكر، أن التطبيق المنظم جيدًا يبدأ بإدارة الاستيرادات بشكل فعال!

لا تتردد في تجربة هذا الأسلوب في مشاريعك الخاصة ورؤية الفرق الذي تصنعه!