در حال بارگذاری...

شیء داخل شیء دیگر

رنگ blue مال خودکار است، نه مال کیف. کیف فقط همان خودکار را با خودش دارد و برای همین فرزندِ خودکار حساب نمی‌شود. این صفحه نه بسته‌ای نصب می‌کند و نه پوشه‌ای می‌سازد. ساختن از Pen("blue") شروع می‌شود. بعد Bag(pen) همان خودکار را می‌گذارد داخل کیف. print(bag.pen.color) روی صفحه همان blue را می‌نویسد، چون کیف رنگ جدا ندارد.

خودکار داخل کیف

python
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 است. کیف خودکار را دارد و کلمه روی خودکار مانده. کیف فرزند خودکار نیست. صفحهٔ بعد کلاس داده است.

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
6
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود