Menu
CoddyTech
flag Ar iconالعربيةdown icon

دالة ()super

جزء من قسم البرمجة كائنية التوجه في رحلة Python على Coddy. الدرس 18 من 64.

تتيح الدالة super() للفئة الابنة استدعاء الأساليب من فئتها الأصلية. وهذا يسمح لك بتوسيع وظائف الفئة الأصلية بدلًا من استبدالها بالكامل.

إليك مثالًا على استخدام super() في المُنشئ:

class Animal:
    def __init__(self, name):
        self.name = name
        print(f"Animal created: {name}")
class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)  # استدعاء __init__ الخاص بالأب
        self.breed = breed
        print(f"Dog breed set: {breed}")

أنشئ كائنًا من نوع الكلب:

buddy = Dog("Buddy", "Golden Retriever")
print(f"Name: {buddy.name}, Breed: {buddy.breed}")

الناتج:

Animal created: Buddy
Dog breed set: Golden Retriever
Name: Buddy, Breed: Golden Retriever

استخدم super() لتوسيع أساليب الفئة الأصلية:

class Animal:
    def make_sound(self):
        print("Generic animal sound")
class Dog(Animal):
    def make_sound(self):
        super().make_sound()  # استدعِ method الأب أولاً
        print("Woof!")        # أضف سلوكاً خاصاً بالكلب

استدعِ الطريقة الموسَّعة:

buddy = Dog()
buddy.make_sound()

الناتج:

Generic animal sound
Woof!

من دون super()، ستفقد وظيفة الصنف الأب:

class Cat(Animal):
    def make_sound(self):
        print("Meow!")  # صوت القطة فقط، تم تجاهل طريقة الأب
cat = Cat()
cat.make_sound()

المخرجات:

Meow!

النقطة الأساسية: استخدم super() لاستدعاء أساليب الفئة الأصلية من الفئات الفرعية. يتيح لك ذلك توسيع الوظائف بدلًا من استبدالها بالكامل. تشمل الاستخدامات الشائعة استدعاء أساليب __init__ للفئة الأصلية وتوسيع سلوكها.

challenge icon

التحدي

متوسط

في هذا التحدي، ستنفّذ تسلسلًا هرميًا للفئتين Person وEmployee باستخدام الوراثة.

  • person.py: تحتوي على الفئة Person مع سمتي الاسم والعمر
  • employee.py: تحتوي على الفئة Employee التي ترث من Person
  • driver.py: الملف الرئيسي لاختبار تنفيذك

يحتوي كل ملف على تعليقات TODO مفصّلة لإرشادك خلال عملية التنفيذ.

جرّب بنفسك

# TODO: استورد الصنف Person من person.py
# TODO: استورد الصنف Employee من employee.py

def main():
    # TODO: أنشئ كائن Person بالاسم "Alice" والعمر 30
    person = None
    
    # TODO: أنشئ كائن Employee بالاسم "Bob" والعمر 35 والوظيفة "Developer"
    employee = None
    
    # TODO: استدعِ الدالة introduce() على كائن Person
    # Expected output: "Hi, I'm Alice and I'm 30 years old"
    
    # TODO: اطبع سطرًا فارغًا للمسافة - print()
    
    # TODO: استدعِ الدالة introduce() على كائن Employee
    # الناتج المتوقع: 
    # "Hi, I'm Bob and I'm 35 years old"
    # "I work as a Developer"

if __name__ == "__main__":
    main()
quiz iconاختبر نفسك

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

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Python عبر الإنترنت