40- كورس لغة بايثون Python – Python self Parameter

شرح مفصل لـ Python self Parameter

مفهوم self في بايثون

تُعتبر self في بايثون جزءًا أساسيًا من أي تعريف لدوال الكائنات (Methods) داخل الفئات (Classes). عندما تقوم بإنشاء كائن من فئة معينة، تحتاج إلى طريقة للوصول إلى خصائص وطرق هذا الكائن. هنا يأتي دور self، فهو المتغير الذي يُستخدم للإشارة إلى الكائن الحالي من الفئة. بمعنى آخر، self يُعد بمثابة مرجع للكائنات التي يتم إنشاؤها من الفئة، مما يتيح لكل كائن الوصول إلى بياناته وخصائصه الخاصة. من الضروري تمرير self كأول وسيط في أي دالة كائنية تُعرّف داخل الفئة، حتى لو لم تُستخدم داخل الدالة نفسها، لأن هذا هو ما يميز دوال الكائنات عن الدوال العادية.

كيفية استخدام self في البرمجة الكائنية

في البرمجة الكائنية باستخدام بايثون، يعتمد المطورون على self للوصول إلى خصائص وطرق الكائنات. على سبيل المثال، إذا كان لدينا فئة تُسمى Car تحتوي على خاصية تُسمى color، فإن self يُستخدم للإشارة إلى هذه الخاصية لكل كائن على حدة. انظر إلى المثال التالي:

class Car:
    def __init__(self, color):
        self.color = color

    def display_color(self):
        print(f"The color of the car is {self.color}")

my_car = Car("red")
my_car.display_color()

في هذا المثال، عندما تم إنشاء الكائن my_car من الفئة Car، تم تمرير اللون “red” كقيمة للخاصية color. باستخدام self.color، نتمكن من الوصول إلى خاصية اللون للكائن الحالي. ثم، عند استدعاء الدالة display_color، يتم طباعة لون السيارة المحدد بواسطة self.color.

أمثلة إضافية على استخدام self

لننظر في مثال آخر يُوضح كيفية استخدام self في إعداد خصائص مختلفة للكائنات. لنقم بإنشاء فئة تُسمى Person تحتوي على خصائص مثل الاسم والعمر:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"My name is {self.name} and I am {self.age} years old.")

person1 = Person("Alice", 30)
person2 = Person("Bob", 25)

person1.introduce()
person2.introduce()

في هذا المثال، نرى كيف يمكن لـ self أن تشير إلى خصائص مختلفة مثل الاسم والعمر لكل كائن على حدة. عند إنشاء الكائنات person1 و person2، كل كائن يحتفظ بمعلوماته الخاصة، والتي يمكن الوصول إليها من خلال self. بالتالي، يمكن لكل كائن أن يُعرّف عن نفسه باستخدام الدالة introduce، مما يُظهر قوة ومرونة self في البرمجة الكائنية.