Python • المستوى الثالث • الدرس 2
العودة لفهرس المستوىالوراثة وإعادة الاستخدام (Inheritance & Polymorphism)
أهداف الدرس العلمية
- إنشاء أصناف أبناء (Subclasses) ترث الخواص والدوال من الصنف الأب.
- إعادة تعريف الدوال (Method Overriding) لتحقيق التعددية الشكلية (Polymorphism).
- استخدام دالة
super()لاستدعاء Constructor الصنف الأب. - التحقق من العلاقة بين الأصناف باستخدام
isinstance().
1. قوة الوراثة في Python
تسمح لك الوراثة بنقل وظائف الصنف الأب لأصناف فرعية بدون إعادة كتابة الكود، مع إمكانية تعديل سلوك بعض الدوال حسب الحاجة.
python
class Vehicle:
def __init__(self, brand):
self.brand = brand
def move(self):
return "المركبة تتحرك"
class Car(Vehicle): # ← Car يرث من Vehicle
def move(self): # ← إعادة تعريف (Override)
return f"سيارة {self.brand} تسير على الطريق"
class Plane(Vehicle):
def move(self):
return f"طائرة {self.brand} تطير في السماء"
# Polymorphism: نفس الاستدعاء، سلوك مختلف
for v in [Car("تويوتا"), Plane("بوينج")]:
print(v.move())2. المفاهيم الأساسية للوراثة
🧬 Inheritance
الصنف الابن يرث خصائص وميثودات الصنف الأب:
class Dog(Animal):
pass🔄 Override
إعادة تعريف ميثود موجودة في الأب:
def speak(self):
return "مياو"⬆️ super()
استدعاء Constructor الأب من الابن:
super().__init__(name, sound)
🎭 Polymorphism
نفس الاستدعاء، سلوك مختلف حسب الكائن:
for a in animals:
a.speak() التطبيق العملي المباشر
تحدي الدرس الثاني: عائلة كاملة من الحيوانات
قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:
- أنشئ صنفاً جديداً
Catيرث منAnimalويُعيد تعريفspeak()ليقول"مياو مياو". - أنشئ صنفاً آخر
Cowيرث منAnimalمع استخدامsuper().__init__()لإضافة خاصيةmilk_liters. - أضف ميثود
produce_milk()داخلCowتُرجع كمية الحليب. - أنشئ 3 كائنات:
my_dog،my_cat،my_cow. - استخدم حلقة
forعلى القائمة[my_dog, my_cat, my_cow]لاستدعاءspeak()على كل كائن (Polymorphism). - اختبر
isinstance(my_dog, Animal)للتأكد من الوراثة.
⏳ جارٍ تحميل المحرر التفاعلي...