الدرس 4 من 10
صنف يتصرّف كقائمة
- 14 دقيقة
- 6 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
استعمال len وin وfor على صنفك
الشرح
العمليات len(x) وx[0] و"a" in x وfor s in x ليست خاصّة بالقوائم، فكل واحدة منها تستدعي دالة خاصّة في الصنف، وهي على الترتيب __len__ و__getitem__ و__contains__ و__iter__، فإذا عرّفتها في صنفك عاملته Python كما تعامل القوائم.
والفائدة أن من يستعمل صنفك لا يحتاج إلى تعلّم دوال جديدة مثل get_song(0) وcount()، ويحصل دون جهد على كل ما يعتمد على هذه الدوال، مثل sorted وlist وenumerate، كما تُعدّ قائمة التشغيل الفارغة False في if playlist: مثل القوائم العادية.
والفخّ في __iter__ أنها يجب أن تُرجع مُكرِّرًا (iterator) جديدًا في كل استدعاء، فمن يجعل الصنف مُكرِّرًا لنفسه يجد الحلقة الثانية فارغة لأن الأولى استهلكته. والأبسط أن تترك هذا للقائمة الداخلية، فهي تصنع مُكرِّرًا جديدًا كلما طُلب منها.
المطلوب
أضف إلى Playlist الدوال الأربع معتمدًا على self.songs، ليعمل الصنف مع len والوصول إلى العنصر برقم موضعه وin وfor.
الفحوص
6 فحوص- الدالة len تعدّ الأغاني
- الوصول بالموضع يعمل من الطرفين
- الكلمة in تبحث في الأغاني
- الحلقة for تمرّ على الأغاني بالترتيب
- تصلح لأكثر من حلقة
- القائمة الفارغة تُعدّ False في if