Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

معامل self

جزء من قسم Object Oriented Programming في رحلة Python على Coddy — الدرس 4 من 64.

يشير المعامل self إلى مثيل class داخل methods. فهو يتيح لك الوصول إلى attributes الكائن الحالي وتعديلها.

إليك مثال على فئة (class) تحتوي على دوال (methods) تستخدم self:

class Car:
    def honk(self):
        print("Beep beep!")
    
    def describe(self):
        print(f"I am a {self.color} {self.model}")

يجب أن يكون المعامل self دائمًا هو المعامل الأول في تعريفات الدوال (methods). فهو يخبر الدالة بأي كائن محدد يتم استخدامه.

قم بإنشاء كائن سيارة وأضف سمات:

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 - بايثون تمرر تلقائياً my_car كبارامتر self.

إليك ما يحدث خلف الكواليس:

# عندما تكتب هذا:
my_car.describe()

# يقوم Python فعلياً بهذا:
Car.describe(my_car)

يسمح معامل self لكل كائن بالوصول إلى بياناته الخاصة. فبدون self، لن تعرف الدوال (methods) أي سمات كائن يجب استخدامها.

نقطة هامة: قم دائمًا بتضمين self كمعامل أول في تعريفات الدوال (methods)، ولكن لا تقم بتمريره أبدًا عند استدعاء الدوال - بايثون تتعامل مع هذا تلقائيًا.

challenge icon

التحدي

سهل

أكمل فئة Car في ملف car.py عن طريق إضافة تابع (method) يسمى display_info يستخدم معامل self لطباعة سنة السيارة، والشركة المصنعة، والطراز بالتنسيق التالي:

"This car is a [year] [make] [model]".

  • car.py: يحتوي على تعريف فئة Car حيث ستضيف تابع display_info
  • driver.py: ملف التنفيذ الرئيسي الذي يستورد ويستخدم فئة Car

سيقوم ملف driver.py باستيراد فئة Car الخاصة بك وإنشاء كائنات (instances) لاختبار تنفيذك. تأكد من أن التابع الخاص بك يعمل بشكل صحيح عند استدعائه من ملف driver.

ورقة مرجعية

يشير المعامل self إلى مثيل الفئة (class) داخل الأساليب (methods) ويسمح لك بالوصول إلى سمات الكائن الحالي وتعديلها.

يجب أن يكون self دائماً هو المعامل الأول في تعريفات الأساليب:

class Car:
    def honk(self):
        print("Beep beep!")
    
    def describe(self):
        print(f"I am a {self.color} {self.model}")

قم بإنشاء كائن وإضافة سمات:

my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"

استدعاء الأساليب (يقوم بايثون تلقائياً بتمرير الكائن كـ self):

my_car.honk()        # Beep beep!
my_car.describe()    # I am a Red Sedan

نقطة رئيسية: قم دائماً بتضمين self كمعامل أول في تعريفات الأساليب، ولكن لا تقم بتمريره أبداً عند استدعاء الأساليب.

جرّب بنفسك

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
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming