الدرس 2 من 10

كائن يصف نفسه

هدف الدرس

repr للمطوّر و str للمستخدم

01

الشرح

اطبع كائنًا من صنف كتبته للتو فترى شيئًا مثل <Money object at 0x7f3a…>: اسم الصنف وعنوانًا في الذاكرة، ولا شيء عن محتواه. وهذا ما سيظهر في السجلّات ورسائل الخطأ يوم تحتاجها.

بايثون تفرّق بين تمثيلين. __str__ للمستخدم: نصّ مقروء مثل 50 SAR، وهو ما يطلبه print وstr(). و__repr__ للمطوّر: نصّ لا لبس فيه، وأفضله ما يطابق سطر الإنشاء نفسه: Money(50, 'SAR'). ضع فيه !r بعد كل حقل، فيظهر النصّ '50' بين علامتي اقتباس ولا يختلط بالعدد 50.

والفخّ: القوائم والقواميس تعرض عناصرها بـrepr دائمًا، حتى داخل print. فمن كتب __str__ وحده ثم طبع قائمة عادت إليه العناوين الغامضة. وإن غاب __str__ رجعت بايثون إلى __repr__، والعكس لا يحدث. فإن كتبت واحدة فقط فلتكن __repr__.

02

المطلوب

أضف إلى Money دالة __repr__ تُرجع Money(50, 'SAR')، ودالة __str__ تُرجع 50 SAR.

معايير التصحيح

5 معايير
  1. repr يطابق سطر الإنشاء
  2. repr يميّز النصّ من العدد
  3. str يعطي نصًّا مقروءًا
  4. القائمة تعرض repr عناصرها
  5. eval(repr(m)) يعيد بناء الكائن
main.py
المخرجاتPython · Pyodide

جارٍ تحميل بيئة بايثون… تُحمَّل مرّة واحدة ثم يحفظها المتصفح.

–/5

يبدأ الفحص حين تجهز البيئة.

5 معايير في بطاقة «المطلوب».