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