الدرس 2 من 10
كائن يصف نفسه
- 11 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
repr للمطوّر و str للمستخدم
الشرح
اطبع كائنًا من صنف كتبته للتو فترى شيئًا مثل <Money object at 0x7f3a…>: اسم الصنف وعنوانًا في الذاكرة، ولا شيء عن محتواه. وهذا ما سيظهر في السجلّات ورسائل الخطأ يوم تحتاجها.
بايثون تفرّق بين تمثيلين. __str__ للمستخدم: نصّ مقروء مثل 50 SAR، وهو ما يطلبه print وstr(). و__repr__ للمطوّر: نصّ لا لبس فيه، وأفضله ما يطابق سطر الإنشاء نفسه: Money(50, 'SAR'). ضع فيه !r بعد كل حقل، فيظهر النصّ '50' بين علامتي اقتباس ولا يختلط بالعدد 50.
والفخّ: القوائم والقواميس تعرض عناصرها بـrepr دائمًا، حتى داخل print. فمن كتب __str__ وحده ثم طبع قائمة عادت إليه العناوين الغامضة. وإن غاب __str__ رجعت بايثون إلى __repr__، والعكس لا يحدث. فإن كتبت واحدة فقط فلتكن __repr__.
المطلوب
أضف إلى Money دالة __repr__ تُرجع Money(50, 'SAR')، ودالة __str__ تُرجع 50 SAR.
معايير التصحيح
5 معايير- repr يطابق سطر الإنشاء
- repr يميّز النصّ من العدد
- str يعطي نصًّا مقروءًا
- القائمة تعرض repr عناصرها
- eval(repr(m)) يعيد بناء الكائن