الوراثة الأساسية
جزء من قسم 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): لإنشاء الوراثة. يساعدك هذا في إعادة استخدام الكود وإنشاء تسلسلات هرمية منطقية للفئات.
التحدي
متوسط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 دون تعديليتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1أساسيات OOP
الملفات الخارجيةمقدمة في OOPClasses مقابل Objectsمعامل selfMethodsAttributesدالة البناء (__init__)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسيةدالة ()superإعادة تعريف الدوال (Method Overriding)الوراثة المتعددةترتيب استدعاء الدوال (Method Resolution Order)مراجعة - هيكلية الموظفين5تعدد الأشكال
مراجعة إعادة تعريف الدوالمفهوم Duck Typingالأصناف والدوال المجردةتصميم الواجهاتملخص - حاسبة الأشكال