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 بعناية لأنها توفر إرشادات خطوة بخطوة للحل.

جرّب بنفسك

# 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