الدرس 2 من 10

كائن يصف نفسه

هدف الدرس

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

01

الشرح

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

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

والفخّ أن القوائم والقواميس تعرض عناصرها بـrepr دائمًا، حتى داخل print، فمن كتب __str__ وحدها ثم طبع قائمة عادت إليه العناوين الغامضة. وإذا لم تكتب __str__ استعملت Python __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)

نحمّل بيئة Python الآن. يحدث هذا مرّة واحدة فقط، ثم يحفظها متصفّحك.

–/5

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

تجد 5 فحوص في بطاقة «المطلوب».