التوابع الخاصة
عندما تكتب print(guest) في البرنامج الأول، تظهر على الشاشة العبارة badge mira. التابع الخاص هو ما يجعل الشارة نفسها تجيب عن print أو len. الاسم mira محفوظ داخل Badge، ولا تُثبَّت أي حزمة ولا يُنشأ أي مجلد. السطر print(guest) هو الذي يشغّل str، ولذلك لا تكتب guest.str() بنفسك في البرنامج. عند تنفيذ Badge("mira") يعمل init، وself هو هذه الشارة. يعيد str الكلمتين "badge " مع الاسم، أي بمسافة واحدة بين badge وmira، أما الكتابة على الشاشة فتتولاها print.
class Badge:
def __init__(self, name):
self.name = name
def __str__(self):
return "badge " + self.name
guest = Badge("mira")
print(guest)
على الشاشة سطر واحد: badge mira. الاسم المحفوظ هو mira، أما كلمة badge في أوله فيضيفها str، وprint هي التي تكتب السطر. لو حذفت print من البرنامج لبقيت الشاشة فارغة، لأن إعادة الكلمات من التابع لا تعني كتابتها. والسطر guest.str() ليس في البرنامج؛ يكفي print(guest) لتشغيل هذا التابع الخاص. أما الشارة التي لا تملك str فلن تكتب badge mira، بل سطرًا يذكر اسم النمط ومكانًا في الذاكرة. ولا تُكتب None.
class Badge:
def __init__(self, name):
self.name = name
def __len__(self):
return len(self.name)
guest = Badge("mira")
print(len(guest))
البرنامج الثاني مستقل عن الأول. شاشته هي العدد الصحيح 4، لا badge mira ولا mira. في mira أربعة أحرف هي m وi وr وa، لذلك يعيد len القيمة 4 وتكتبها print. لا توجد فاصلة عشرية، ولا مسافة داخل الاسم المحفوظ. هذا البرنامج لا يعرّف str، فلا يكتب badge mira. ولو غاب len لتوقف len(guest) بخطأ اسمه TypeError، ولا تُكتب None، ولا يكمل البرنامج. وهذا السطر الفاشل ليس في البرنامج.
📊 ما تكتبه وما تعرضه الشاشة
| ما تكتبه | ما تعرضه الشاشة |
|---|---|
| print(guest) | badge mira |
| print(len(guest)) | 4 |
| len(guest) من دون __len__ | يتوقف البرنامج |
الصفحة التالية تضع كائنًا داخل كائن آخر. أما هذه الصفحة فتعرض تابعين خاصين فقط على شارة واحدة اسمها mira.
شارة واحدة وجوابان
print(guest) تكتب badge mira لأن str يعمل، وprint(len(guest)) تكتب 4 لأن len يعمل. العدد 4 هو عدد أحرف mira. لا تضع أقواسًا بعد هذين الاسمين الخاصين. والصفحة التالية تضع كائنًا داخل كائن آخر.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى