الوراثة الأساسية
جزء من قسم البرمجة كائنية التوجه في رحلة 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): لإنشاء الوراثة. يساعدك هذا في إعادة استخدام الكود وإنشاء تسلسلات هرمية منطقية للفئات.
التحدي
متوسطvehicle.py: يحتوي على فئةVehicleالأساسيةcar.py: يحتوي على فئةCarالتي ترث منVehicledriver.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 دون تعديليتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجه
1أساسيات البرمجة كائنية التوجّه (OOP)
مقدمة إلى OOPالملفات الخارجيةالصفوف مقابل الكائناتالمعامل selfالأساليبالسماتالأسلوب الباني (__init__)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسيةدالة ()superإعادة تعريف الدوال (Method Overriding)الوراثة المتعددةترتيب استدعاء الدوال (Method Resolution Order)مراجعة - هيكلية الموظفين5تعدد الأشكال
مراجعة إعادة تعريف الدوالمفهوم Duck Typingالأصناف والدوال المجردةتصميم الواجهاتملخص - حاسبة الأشكالتدرّب بنفسك: مترجم Python عبر الإنترنت