python - كيف يمكنني تصميم فصل دراسي في بيثون؟



3 Answers

النصائح التالية (على غرار نصيحة S.Lott) هي من الكتاب ، بيثون البداية: من المبتدئ إلى المحترف

  1. اكتب وصفاً لمشكلتك (ما الذي يجب أن تفعله المشكلة؟). تسليط الضوء على جميع الأسماء والأفعال والصفات.

  2. الذهاب من خلال الأسماء ، وتبحث عن الطبقات المحتملة.

  3. الذهاب من خلال الأفعال ، وتبحث عن الأساليب المحتملة.

  4. الذهاب من خلال الصفات ، وتبحث عن الصفات المحتملة

  5. تخصيص الطرق والسمات لفصولك الدراسية

لتنقية الفصل ، ينصح الكتاب أيضًا باتباع ما يلي:

  1. اكتب (أو أحلم) مجموعة من حالات الاستخدام - سيناريوهات عن كيفية استخدام برنامجك. محاولة لتغطية جميع وظيفيا.

  2. فكر في كل خطوة استخدام خطوة بخطوة ، مع التأكد من تغطية كل ما نحتاجه.

python oop class-design

لقد حصلت على بعض المساعدة الرائعة في أسئلتي السابقة للكشف عن الكفوف والأقدام في مخلب ، ولكن كل هذه الحلول لا تعمل إلا لقياس واحد في كل مرة.

الآن لدي بيانات تتكون من:

  • حوالي 30 كلاب.
  • لكل منها 24 قياسات (مقسمة إلى عدة مجموعات فرعية) ؛
  • كل قياس لديه ما لا يقل عن 4 جهات اتصال (واحد لكل مخلب) و
    • كل جهة اتصال مقسمة إلى 5 أجزاء و
    • لديها العديد من المعلمات ، مثل وقت الاتصال ، الموقع ، القوة الكلية إلخ.

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

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

لذلك أنا الآن أبحث عن نصيحة حول كيفية إنشاء فصول تسمح لي بمعالجة بياناتي ( الارتباط بالبيانات المضغوطة لكلب واحد ) بطريقة معقولة.




إن الفكرة الكاملة لتصميم OO هي جعل خريطة الكود الخاص بك إلى مشكلتك ، لذلك عندما تريد ، على سبيل المثال ، أول خطوة لكلب ، فإنك تفعل شيئًا مثل:

dog.footstep(0)

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

 class Dog:
   def __init__(self):
     self._footsteps=None 
   def footstep(self,n):
     if not self._footsteps:
        self.readInFootsteps(...)
     return self._footsteps[n]

[هذا هو الآن نوع من نمط التخزين المؤقت. في المرة الأولى التي يقرأها ويقرأ بيانات خطوات القدم ، في أوقات لاحقة يحصل عليها فقط من self._footsteps.]

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




بعد قراءة التعليمات البرمجية المرتبطة ، يبدو لي أنه من الأفضل عدم تصميم فئة الكلب في هذه المرحلة. بدلا من ذلك ، يجب عليك استخدام Pandas dataframes . و dataframe هو جدول مع الأعمدة. سيكون لديك dataframe أعمدة مثل: dog_id ، contact_part ، contact_time ، contact_location ، إلخ. يستخدم Pandas صفائف Numpy خلف الكواليس ، ولديه العديد من وسائل الراحة لك:

  • حدد كلبًا على سبيل المثال: my_measurements['dog_id']=='Charly'
  • احفظ البيانات: my_measurements.save('filename.pickle')
  • pandas.read_csv() استخدام pandas.read_csv() بدلاً من قراءة الملفات النصية يدوياً.



Related