معامل self
جزء من قسم البرمجة كائنية التوجه في رحلة Python على Coddy. الدرس 4 من 64.
يشير المعامل self إلى نسخة من فئة داخل الأساليب. وهو يتيح لك الوصول إلى سمات الكائن الحالي وتعديلها.
إليك مثالًا على فئة تحتوي على أساليب تستخدم self:
class Car:
def honk(self):
print("Beep beep!")
def describe(self):
print(f"I am a {self.color} {self.model}")يجب أن يكون المعامل self دائمًا أول معامل في تعريفات الأساليب. فهو يخبر الأسلوب بالكائن المحدد الذي يُستخدم.
أنشئ كائن سيارة وأضف إليه خصائص:
my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"استدعِ الآن الطريقتين:
my_car.honk()
my_car.describe()المخرجات:
Beep beep!
I am a Red Sedanلاحظ أنه عند استدعاء my_car.describe()، لا تمرّر أي شيء إلى self - إذ تمرّر Python تلقائيًا my_car بوصفه المعامل self.
إليك ما يحدث خلف الكواليس:
# عندما تكتب هذا:
my_car.describe()
# تنفّذ Python هذا فعليًا:
Car.describe(my_car)تتيح المعلمة self لكل كائن الوصول إلى بياناته الخاصة. ومن دون self، لن تعرف الأساليب سمات أي كائن ينبغي استخدامها.
النقطة الأساسية: أدرج دائمًا self كمعامل أول في تعريفات الطرق، لكن لا تمرّره أبدًا عند استدعاء الطرق؛ تتولى Python ذلك تلقائيًا.
التحدي
سهلأكمل الصنف Car في car.py بإضافة دالة تُسمّى display_info تستخدم المعامل self لطباعة سنة السيارة وطرازها وشركتها المصنّعة بالتنسيق التالي:
"This car is a [year] [make] [model]".
car.py: يحتوي على تعريف الصنفCar، حيث ستضيف الدالةdisplay_infodriver.py: الملف الرئيسي للتنفيذ الذي يستورد الصنفCarويستخدمه
سيستورد الملف driver.py الصنف Car الذي أنشأته، وينشئ كائنات لاختبار تنفيذك. تأكد من أن دالتك تعمل بشكل صحيح عند استدعائها من ملف التشغيل.
جرّب بنفسك
from car import Car
# اختبر شيفرتك
my_car = Car()
my_car.year = 2020
my_car.make = "Toyota"
my_car.model = "Corolla"
my_car.display_info() # يجب أن يطبع: This car is a 2020 Toyota Corollaيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجه
1أساسيات OOP
الملفات الخارجيةمقدمة في OOPClasses مقابل Objectsمعامل selfMethodsAttributesدالة البناء (__init__)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسيةدالة ()superإعادة تعريف الدوال (Method Overriding)الوراثة المتعددةترتيب استدعاء الدوال (Method Resolution Order)مراجعة - هيكلية الموظفين5تعدد الأشكال
مراجعة إعادة تعريف الدوالمفهوم Duck Typingالأصناف والدوال المجردةتصميم الواجهاتملخص - حاسبة الأشكالتدرّب بنفسك: مترجم Python عبر الإنترنت