شیء داخل شیء دیگر
رنگ blue مال خودکار است، نه مال کیف. کیف فقط همان خودکار را با خودش دارد و برای همین فرزندِ خودکار حساب نمیشود. این صفحه نه بستهای نصب میکند و نه پوشهای میسازد. ساختن از Pen("blue") شروع میشود. بعد Bag(pen) همان خودکار را میگذارد داخل کیف. print(bag.pen.color) روی صفحه همان blue را مینویسد، چون کیف رنگ جدا ندارد.
class Pen:
def __init__(self, color):
self.color = color
class Bag:
def __init__(self, pen):
self.pen = pen
pen = Pen("blue")
bag = Bag(pen)
print(bag.pen.color)
bag.pen خودکارِ تازهای نیست. همان خودکاری است که ساختید، پس pen.color و bag.pen.color هر دو blue هستند. print فقط همین یک کلمه را مینویسد. badge به آن نمیچسبد و عدد 4 هم نوشته نمیشود. خط class Bag کیف را پر نمیکند. پر شدن کار Bag(pen) است. همان لحظه init کیف اجرا میشود و self خودِ کیف است.
اگر bag.color را بخوانید برنامه میایستد. رنگی روی کیف ذخیره نشده و نام این ایستادن AttributeError است. None نوشته نمیشود و برنامه ادامه پیدا نمیکند. Bag("blue") هم در برنامه نیست. کلمه جای خودکار را نمیگیرد، چون خودش رنگ ندارد و خواندن .color روی آن هم با AttributeError میایستد. class Bag(Pen) را ننویسید. آن شکل فرزند میسازد. اینجا خودکار داخل کیف نشسته است.
📊 خودکار، کیف، کلمه
| چه دارید | چیست |
|---|---|
| pen | خودکاری که ساختید و blue را نگه میدارد |
| bag.pen | همان خودکار، داخل کیف |
| bag.pen.color | کلمهٔ blue |
صفحهٔ بعد کلاس داده است: کلاسی که بیشتر جایش را به نگهداشتن مقدارها میدهد. این صفحه فقط خودکار را داخل کیف میگذارد و blue را از راه کیف میخواند.
خودکار توی کیف است
آنچه میبینید blue است. کیف خودکار را دارد و کلمه روی خودکار مانده. کیف فرزند خودکار نیست. صفحهٔ بعد کلاس داده است.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود