التوابع داخل الفئة
التابع مهمة تخصّ مصباحًا واحدًا. السطر lamp.label() يشغّل تلك المهمة ويعيد لك العبارة glow blue. الأقواس جزء من التشغيل، ومن دونها لم تُنفَّذ المهمة، وما تراه على الشاشة ليس glow blue. التابع label يستخدم الكلمة المخزّنة أصلًا في ذلك المصباح. هو لا يثبّت حزمة ولا ينشئ مجلدًا. الأسطر المزاحة تحت label هي المهمة نفسها. return يعيد العبارة، لكنه لا يكتبها على الشاشة بنفسه.
class Lamp:
def __init__(self, color):
self.color = color
def label(self):
return "glow " + self.color
lamp = Lamp("blue")
print(lamp.label())
تعرض الشاشة glow blue، وبين glow وblue مسافة. بنى label هذه العبارة من اللون المخزّن وأعادها. print هو الذي يكتبها. لو غاب سطر print لظلّ التابع يعيد العبارة وبقيت الشاشة فارغة. lamp.color ما زالت الكلمة المخزّنة blue، أما lamp.label() فهي المهمة التي تضع glow أمامها. القراءتان ليستا شيئًا واحدًا.
class Lamp:
def __init__(self, color):
self.color = color
def label(self):
return "glow " + self.color
one = Lamp("blue")
two = Lamp("red")
print(one.label())
print(two.label())
على الشاشة سطران: الأول glow blue والثاني glow red. one وtwo مصباحان. كل label يقرأ الكلمة المخزّنة في مصباحه فقط. بناء مصباح red لا يغيّر مصباح blue، فيبقى one.label() يعطيك glow blue. Lamp ما زالت القالب، وone وtwo هما الكائنان. المهمة واحدة، والكلمة المخزّنة تختلف في كل مرة.
Lamp.label() من دون مصباح ليست في أيٍّ من البرنامجين. القالب نفسه لا يحمل لونًا مخزّنًا، والمهمة تحتاج إلى مصباح تقرأ منه. يتوقف البرنامج عند هذا السطر، واسم الخطأ TypeError. لا تُكتب None ولا يكمل البرنامج. أنشئ مصباحًا أولًا، ثم اكتب الأقواس عليه.
الصفحة التالية عن الوراثة. في هذه الصفحة تشغّل مهمة واحدة فقط على مصباح، ثم ترى أن المصباح الثاني يحتفظ بكلماته الخاصة.
مهمة على المصباح
lamp.label() يعرض glow blue. print يكتب العبارة، أما التابع فيعيدها فقط. يمكن لمصباح ثانٍ أن يعرض glow red دون أن يغيّر الأول. Lamp.label() من دون مصباح يتوقف بـ TypeError. الصفحة التالية عن الوراثة.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى