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

الوراثة المتعددة

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

تسمح الوراثة المتعددة للفئة بالوراثة من أكثر من فئة أب واحدة، مما يجمع بين الوظائف من مصادر مختلفة.

إليك فئتان أساسيتان (parent classes):

class Animal:
    def __init__(self, name):
        self.name = name
    
    def eat(self):
        return f"{self.name} is eating"

class Flyable:
    def fly(self):
        return f"{self.name} is flying"

أنشئ فئة فرعية ترث من كلا الأبوين:

class Bird(Animal, Flyable):
    def __init__(self, name, species):
        super().__init__(name)  # يستدعي __init__ الخاصة بـ Animal
        self.species = species
    
    def sing(self):
        return f"{self.name} is singing"

الصيغة class Bird(Animal, Flyable): تعني أن Bird يرث من كل من Animal و Flyable.

أنشئ كائن طائر واستخدم الدوال (methods) من كلا الأبوين:

sparrow = Bird("Sparrow", "House sparrow")

استدعاء الدوال من الفئة الأب الأولى:

print(sparrow.eat())

استدعاء الدوال (methods) من الفئة الأب الثانية:

print(sparrow.fly())

استدعِ الطريقة الخاصة بالطائر:

print(sparrow.sing())

المخرجات:

Sparrow is eating
Sparrow is flying
Sparrow is singing

يمكنك التحقق من ترتيب الوراثة:

print(Bird.__mro__)  # ترتيب حل الأساليب (Method Resolution Order)

يوضح هذا أي فئة أب يتم التحقق منها أولاً عند البحث عن الدوال (methods).

نقطة رئيسية: تستخدم الوراثة المتعددة صيغة class Child(Parent1, Parent2):. تحصل الفئة التابعة على جميع الدوال (methods) من جميع الفئات الأصلية. يقوم Python بفحص الفئات الأصلية من اليسار إلى اليمين عند البحث عن الدوال.

challenge icon

التحدي

متوسط

في هذا التحدي، ستقوم بتنفيذ نظام فئات متعدد الملفات يوضح الوراثة المتعددة مع الهواتف الذكية. يتم تنظيم كل فئة في ملف خاص بها لتحسين تنظيم الكود.

ستحتاج إلى تعديل هذه الملفات:

  • device.py - قم بتنفيذ الفئة الأساسية Device
  • internet.py - قم بتنفيذ الفئة الأساسية Internet
  • smartphone.py - قم بتنفيذ الفئة Smartphone التي ترث من كلتا الفئتين الأساسيتين
  • driver.py - قم بتنفيذ حالات الاختبار التي ستتحقق من أن تنفيذك يعمل بشكل صحيح

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

جرّب بنفسك

# TODO: استيراد فئة Smartphone من smartphone.py

# إنشاء هاتف ذكي واختبار وظائفه
# TODO: إنشاء كائن Smartphone بالعلامة التجارية "Apple" والطراز "iPhone 13"
my_phone = None

# TODO: استدعاء وطباعة وظيفة power_on() للهاتف الذكي

# TODO: استدعاء وطباعة وظيفة connect() للهاتف الذكي

# TODO: استدعاء وطباعة وظيفة make_call() للهاتف الذكي مع المعامل "123-456-7890"
quiz iconاختبر نفسك

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

جميع دروس Object Oriented Programming