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

الوراثة الأساسية

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

تسمح الوراثة للفئة بوراثة السمات والأساليب من فئة أخرى، مما ينشئ علاقة أب-ابن.

إليك مثال على فئة أب (parent class):

class Animal:
    def __init__(self, name):
        self.name = name
    
    def info(self):
        print(f"I am {self.name}, an animal")

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

class Dog(Animal):
    pass  # ترث كل شيء من Animal

الصيغة class Dog(Animal): تعني أن Dog يرث من Animal. ضع اسم الفئة الأب بين قوسين.

أنشئ كائنات من كلا الفئتين:

generic_animal = Animal("Creature")
buddy = Dog("Buddy")

استخدم الأساليب الموروثة:

generic_animal.info()
buddy.info()

المخرجات:

I am Creature, an animal
I am Buddy, an animal

على الرغم من أن Dog لا يعرّف __init__ أو info، إلا أنه يحصل عليهما تلقائياً من Animal.

يمكنك إضافة دوال (methods) جديدة إلى الفئة الفرعية:

class Dog(Animal):
    def bark(self):
        print(f"{self.name} says Woof!")

buddy = Dog("Buddy")
buddy.info()  # دالة موروثة
buddy.bark()  # دالة جديدة

الناتج:

I am Buddy, an animal
Buddy says Woof!

نقطة رئيسية: ترث الفئات الفرعية جميع السمات والأساليب من فئتها الأصلية. استخدم صيغة class Child(Parent): لإنشاء الوراثة. يساعدك هذا في إعادة استخدام الكود وإنشاء تسلسلات هرمية منطقية للفئات.

challenge icon

التحدي

متوسط
  • vehicle.py: يحتوي على فئة Vehicle الأساسية
  • car.py: يحتوي على فئة Car التي ترث من Vehicle
  • driver.py: الملف الرئيسي لاختبار تنفيذك

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

  • إكمال فئة Vehicle بسمات make و model
  • تنفيذ وراثة الفئات بشكل صحيح في فئة Car
  • إعداد بيانات الاستيراد (import) الصحيحة بين الملفات
  • إنشاء واختبار الكائنات في ملف driver

اتبع تعليقات TODO بعناية لأنها توفر إرشادات خطوة بخطوة للحل.

ورقة مرجعية

يسمح التوريث (Inheritance) للفئة بوراثة السمات والأساليب من فئة أخرى باستخدام بناء الجملة class Child(Parent)::

class Animal:
    def __init__(self, name):
        self.name = name
    
    def info(self):
        print(f"I am {self.name}, an animal")

class Dog(Animal):
    pass  # يرث كل شيء من Animal

ترث الفئات التابعة (Child classes) تلقائيًا جميع أساليب وسمات الفئة الأصل (parent):

buddy = Dog("Buddy")
buddy.info()  # يستخدم الأسلوب الموروث
# Output: I am Buddy, an animal

أضف أساليب جديدة إلى الفئات التابعة مع الحفاظ على الوظائف الموروثة:

class Dog(Animal):
    def bark(self):
        print(f"{self.name} says Woof!")

buddy = Dog("Buddy")
buddy.info()  # أسلوب موروث
buddy.bark()  # أسلوب جديد

جرّب بنفسك

# TODO: استيراد فئة Vehicle من vehicle.py
# TODO: استيراد فئة Car من car.py

# TODO: إنشاء كائن Vehicle بماركة "Toyota" وطراز "Corolla"
vehicle = None

# TODO: إنشاء كائن Car بماركة "Honda" وطراز "Civic"
car = None

# TODO: استدعاء التابع display_info() على كائن vehicle
# المخرجات المتوقعة: "Vehicle: Toyota Corolla"

# TODO: استدعاء التابع display_info() على كائن car
# المخرجات المتوقعة: "Vehicle: Honda Civic"
# ملاحظة: Car ترث display_info من Vehicle دون تعديل
quiz iconاختبر نفسك

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

جميع دروس Object Oriented Programming