الوراثة (Inheritance)
تسمح لصنف بأن يرث خصائص ودوال صنف آخر، فلا نكرّر الكود. الصنف الأب (Parent) والصنف الابن (Child):
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
return f"{self.name} يأكل"
class Dog(Animal): # Dog يرث من Animal
def bark(self):
return f"{self.name} ينبح"
d = Dog("ريكس")
print(d.eat()) # ريكس يأكل (موروثة)
print(d.bark()) # ريكس ينبح (خاصة)
استدعاء الأب بـ super
class Employee:
def __init__(self, name):
self.name = name
class Manager(Employee):
def __init__(self, name, team_size):
super().__init__(name) # استدعاء بناء الأب
self.team_size = team_size
m = Manager("ليلى", 5)
print(m.name, m.team_size) # ليلى 5
تعدّد الأشكال (Polymorphism)
نفس الدالة تتصرّف بشكل مختلف حسب الصنف:
class Cat:
def sound(self):
return "مياو"
class Duck:
def sound(self):
return "كواك"
for animal in [Cat(), Duck()]:
print(animal.sound()) # مياو ثم كواك
التغليف (Encapsulation)
إخفاء البيانات الحسّاسة بجعلها "خاصة" بشرطتين سفليتين __:
class Account:
def __init__(self, balance):
self.__balance = balance # خاصة
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def get_balance(self):
return self.__balance
acc = Account(100)
acc.deposit(50)
print(acc.get_balance()) # 150
# acc.__balance خطأ — محميّة من الوصول المباشر
جرّب بنفسك
🐍 محرّر بايثون
...جارٍ تحميل المحرّر
اضغط «تشغيل» لرؤية النتيجة هنا.
أخطاء شائعة
- نسيان
super().__init__()فلا تُهيّأ خصائص الأب. - توقّع حماية مطلقة من
__— هي تثبّط الوصول لا تمنعه تمامًا.
🎯 التالي: نظرة على مكتبات بايثون الشهيرة ومجالاتها.