سؤال

لقد جئت من خلفية أين أنا عادة إنشاء ملف واحد لكل فئة.لقد تنظيم المشتركة فصول تحت الدلائل أيضا.هذه الممارسة هي بديهية لي وقد ثبت أن تكون فعالة في C++, PHP, JavaSript ، إلخ.

أواجه مشكلة في جلب هذا التشبيه في بايثون:الملفات ليست ملفات فقط بعد الآن ، ولكن هم الرسمية وحدات.فإنه لا يبدو من الصواب أن يكون مجرد فئة واحدة في وحدة نمطية --- أكثر الفئات عديمة الفائدة من قبل أنفسهم.إذا كان لدي automobile.py و Automobile الطبقة يبدو سخيفا دائما إشارة على أنها automobile.Automobile وكذلك.

ولكن في نفس الوقت لا يبدو الحق في رمي طن من التعليمات البرمجية في ملف واحد ويطلق عليه اليوم.ومن الواضح جدا معقدة التطبيق يجب أن يكون أكثر من 5 ملفات.

ما هو الصحيح---أو pythonic---الطريقة ؟ (أو إذا كان هناك أي الطريقة الصحيحة, ما هي الطريقة التي تفضلها ولماذا؟) كم رمز يجب أن يكون رمي في بيثون وحدة ؟

هل كانت مفيدة؟

المحلول

نفكر في إنشاء "وحدة منطقية من التعبئة والتغليف" -- التي قد تكون فئة واحدة ، ولكن في كثير من الأحيان سوف تكون مجموعة من الطبقات التي تتعاون تعاونا وثيقا.فصول (أو مستوى الوحدة النمطية المهام -- لا "تفعل جافا في بيثون" دائما استخدام أساليب ثابتة عند مستوى الوحدة النمطية وظائف متاحة أيضا خيار!-) يمكن تصنيفها على أساس هذا المعيار.في الأساس, إذا كان معظم مستخدمي تحتاج أيضا ب والعكس بالعكس ، و ب ربما ينبغي أن يكون في نفس الوحدة.ولكن إذا كان العديد من المستخدمين سوف تحتاج إلى واحد منهما دون الآخر ، ومن ثم ينبغي أن يكون على الارجح في وحدات متميزة (ربما في نفس الحزمة ، أي الدليل مع __init__.py الملف في ذلك).

معيار بيثون المكتبة ، في حين بعيدة عن الكمال ، تميل إلى أن تعكس (في الغالب) معقول الممارسات الجيدة -- حتى تتمكن في الغالب تتعلم منه على سبيل المثال.E. g. ، على threading وحدة بالطبع يعرف Thread الدرجة...ولكنه يحمل أيضا التزامن-دروس بدائية مثل أقفال الأحداث والظروف الإشارات و استثناء من الدرجة التي يمكن أن تثيرها خيوط العمليات (وعدد قليل من أكثر الأشياء).إنها في الجزء العلوي من حجم معقول (800 بما في ذلك خطوط بيضاء و docstrings) ، وبعض حاسمة الموضوع-وظائف ذات الصلة مثل طابور تم وضعها في وحدة منفصلة ، مع ذلك انها مثال جيد على ما قدر ممكن من الوظائف فإنه لا يزال من المنطقي أن حزمة في وحدة واحدة.

نصائح أخرى

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

from automobile import Automobile
car = Automobile()

ولكن، وكما ذكرت من قبل cobbal، أكثر من صنف واحد لكل ملف شائعة جدا في بيثون. وفي كلتا الحالتين، طالما اخترت نظام معقول واستخدامه باستمرار، وأنا لا أعتقد أن أي مستخدمين بيثون بصدد الحصول على مرض جنون لك:).

إذا كنت قادما من ج ++ جهة النظر هذه، هل يمكن عرض وحدات الثعبان أقرب إلى. لذا أو. DLL. نعم أنها تبدو وكأنها الملفات المصدر، لأنه يتم كتابتها الثعبان، لكنها في الواقع المكتبات loadable من وظائف محددة.

والاستعارة الأخرى التي قد تساعد هي أنك قد تبدو وحدات الثعبان كما النطاقات.

في مشروع متوسطة الحجم، وجدت نفسي مع عدة مجموعات من الطبقات ترتبط ارتباطا وثيقا. يتم تجميع العديد من تلك المجموعات الآن في الملفات؛ على سبيل المثال، والطبقات شبكة على مستوى منخفض كلها في وحدة نمطية network واحدة. ومع ذلك، فقد تم تقسيم عدد قليل من أكبر الطبقات للخروج الى ملف الخاصة بهم.

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

وكمبدأ غامض: أكثر من 1 الطبقة لكل ملف هو المعيار لالثعبان

وأيضا، انظر كيف العديد من الفئات بيثون يجب أن وضع في ملف واحد؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top