متدهای ویژه
کارت مهمان باید خودش را به print نشان بدهد و طول نامش را به len بدهد. این کار را متد ویژه انجام میدهد. نام mira روی Badge میماند. نه بستهای نصب میشود، نه پوشهای ساخته میشود. برنامهٔ اول با print(guest) روی صفحه مینویسد badge mira. آن خط str را اجرا میکند. لازم نیست guest.str() را هم در برنامه بیاورید. با Badge("mira")، init همان لحظه اجرا میشود و self همین کارت است. عبارت را str برمیگرداند؛ نوشتن روی صفحه کار print است. میان badge و mira یک فاصله است.
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 چهار حرف دارد، پس len عدد 4 را برمیگرداند و print همان 4 را مینویسد. نقطهٔ اعشار ندارد. در نام ذخیرهشده فاصله نیست. این برنامه 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 است. جلوی نام این متدهای ویژه پرانتز نمیگذارید. صفحهٔ بعد یک شیء را داخل شیء دیگر میگذارد.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود