الوراثة من أقوى مفاهيم البرمجة الكائنية، وتسمح لنا بإنشاء كائنات جديدة ترث خصائص وسلوك كائنات موجودة.
🔷 ما هي الوراثة؟
الوراثة تعني أن كلاس جديد (الابن) يمكنه أن يرث الخصائص (Attributes) والدوال (Methods) من كلاس آخر (الأب)، ويستطيع:
- استخدام خصائص الكلاس الأب كما هي.
- إضافة خصائص جديدة.
- تعديل الخصائص الموروثة.
🔹 الشكل العام للوراثة:
class Parent:
def speak(self):
print("أنا الأب")
class Child(Parent): # يرث من Parent
def play(self):
print("أنا ألعب")
# اختبار
c = Child()
c.speak() # من الأب
c.play() # من الابن
🔸 مثال عملي: موظف ومدير
class Employee:
def __init__(self, name, salary):
self.name = name
self.salary = salary
def show_info(self):
print(f"الموظف: {self.name}, الراتب: {self.salary}")
class Manager(Employee): # المدير يرث من الموظف
def __init__(self, name, salary, department):
super().__init__(name, salary) # استدعاء البناء من الأب
self.department = department
def show_info(self):
super().show_info() # نعرض معلومات الموظف
print(f"القسم: {self.department}")
# اختبار
m = Manager("أحمد", 8000, "المبيعات")
m.show_info()
✅ شرح:
class Manager(Employee)يعني أنManagerيرث منEmployee.super()تستخدم لاستدعاء خصائص أو دوال الكلاس الأب.- يمكنك تعديل دوال الأب داخل كلاس الابن.
🎯 متى نستخدم الوراثة؟
- عندما يكون لديك كلاسات متشابهة وتريد إعادة استخدام الكود.
- لتجنب التكرار وتسهيل الصيانة.
🎯 التمرين: حيوانات تتكلم
المطلوب:
قم بإنشاء كلاس رئيسي باسم Animal يحتوي على دالة speak() تطبع "أنا حيوان".
ثم أنشئ كلاس فرعي Dog يرث من Animal ويعيد تعريف الدالة speak() لتطبع "أنا كلب".
وأيضًا كلاس Cat يعيد تعريف speak() لتطبع "أنا قطة".
بعد ذلك، أنشئ كائن من كل كلاس واستدعِ الدالة speak().
✍️ الحل:
class Animal:
def speak(self):
print("أنا حيوان")
class Dog(Animal):
def speak(self):
print("أنا كلب")
class Cat(Animal):
def speak(self):
print("أنا قطة")
# اختبار الكلاسات
a = Animal()
d = Dog()
c = Cat()
a.speak() # يطبع: أنا حيوان
d.speak() # يطبع: أنا كلب
c.speak() # يطبع: أنا قطة
✅ ما الذي تعلمناه من هذا التمرين؟
- كيفية إنشاء كلاس رئيسي وفروع ترث منه.
- كيفية إعادة تعريف (override) دوال من الكلاس الأب في الكلاس الابن.
- كيفية استخدام الوراثة لتجنب تكرار الكود.

