الكلاس والكائن
نصف الأشياء في برنامجنا كما هي في الواقع: قالب، ونسخ منه. ⏱ نحو 20 دقيقة.
- تشرح معنى الكلاس والكائن بمثال من الحياة.
- تعرّف كلاسًا وتصنع منه كائنات.
- تضيف خصائص للكائن وتصل إليها بالنقطة.
- تكتب دوال داخل الكلاس باستخدام
self.
١القالب والنسخة
المصنع يرسم مخطط السيارة مرة واحدة، ثم يصنع منه سيارات كثيرة: لكل سيارة لونها ورقمها، لكنها كلها من المخطط نفسه.
| في الحياة | في البرمجة | المعنى |
|---|---|---|
| مخطط السيارة | الكلاس class | القالب الذي يصف الشيء |
| سيارة حقيقية | الكائن object | نسخة مصنوعة من القالب |
| اللون والرقم | الخصائص | بيانات كل كائن |
| تشغيل، توقف | الدوال داخل الكلاس | ما يستطيع الكائن فعله |
هذه الطريقة اسمها البرمجة الشيئية: نصف الأشياء في برنامجنا كما هي في الواقع.
٢أول كلاس
نكتب class ثم الاسم (نبدؤه بحرف كبير عادةً). ثم نصنع كائنًا بكتابة اسم الكلاس وبعده قوسان:
class Car: pass my_car = Car()my_car.color = "أحمر"my_car.speed = 0print(my_car.color, my_car.speed)
pass تعني «لا شيء الآن». ونصل إلى خاصية الكائن بالنقطة: my_car.color.
٣دوال الكائن
الدالة داخل الكلاس تُكتب مثل أي دالة، لكن أول مُعطى فيها دائمًا self، ومعناه «هذا الكائن نفسه»:
class Car: def drive(self): self.speed = 60 print("انطلقت بسرعة", self.speed) def stop(self): self.speed = 0 print("توقفت") c = Car()c.drive()c.stop()
عند الاستدعاء لا نكتب self، فبايثون يضعها بنفسه: c.drive().
٤كائنات كثيرة من كلاس واحد
كل كائن له خصائصه الخاصة، وتغيير أحدها لا يؤثر على الآخر:
class Car: pass a = Car()b = Car()a.color = "أحمر"b.color = "أزرق"print(a.color)print(b.color)
📎 للاستزادة (اختياري): أنت تستخدم الكائنات منذ البداية
النص والقائمة في بايثون كائنات أيضًا! لذلك نكتب names.append("علي"): دالة append خاصة بكائن القائمة، ونصل إليها بالنقطة.
توقّع وتحقّق
ما الكلاس؟
كيف نصنع كائنًا من الكلاس Car؟
ما أول مُعطى في دالة داخل الكلاس؟
self تعني هذا الكائن.كيف نصل إلى خاصية name في الكائن s؟
الخلاصة
- الكلاس قالب، والكائن نسخة مصنوعة منه.
- نصنع الكائن هكذا:
c = Car() - نصل إلى الخصائص والدوال بالنقطة:
c.colorوc.drive() - أول مُعطى في دالة الكلاس هو
self، أي هذا الكائن.
تحدٍّ برمجي: كلاس الهاتف
سهلاكتب كلاسًا اسمه Phone فيه دالة call تطبع: جارٍ الاتصال. ثم اصنع كائنًا، وأعطه الخاصية brand بقيمة "نوكيا"، واطبعها، ثم استدعِ call.
- class Phone: ثم دالة
call(self). p = Phone()p.brand = "نوكيا"ثمprint(p.brand)p.call()
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
class Phone:💡 تلميح 1
def call(self): بمسافة بادئة داخل الكلاس.💡 تلميح 2
print("جارٍ الاتصال")حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
class Phone: def call(self): print("جارٍ الاتصال") p = Phone()p.brand = "نوكيا"print(p.brand)p.call()