0Pricing
Python Academy · درس

الوراثة الأحادية

أنشئ فئات فرعية ترث السمات والطرق من فئة أصل

الوراثة الأحادية درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

مقدمة

تتيح الوراثة للفئة الابنة إعادة استخدام سلوك الفئة الأب وتوسيعه دون تكرار الشيفرة.

تعريف فئة ابنة

ترث class Dog(Animal): كل شيء من Animal. ويمكن للفئة الابنة إضافة طرق جديدة أو إعادة تعريف الطرق الموجودة.
class Animal:
    def __init__(self, name): self.name = name
    def speak(self): return '...'
class Dog(Animal):
    def speak(self): return 'Woof'
d = Dog('Rex')
print(d.name, d.speak())

استدعاء super().__init__

يستدعي super().__init__(args) طريقة __init__ الخاصة بالفئة الأب. استدعها دائمًا في الفئة الابنة عندما تحتوي الفئة الأب على منطق للتهيئة.
class Animal:
    def __init__(self, name): self.name = name
class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)
        self.breed = breed
d = Dog('Rex', 'Labrador')
print(d.name, d.breed)

وراثة الطرق

ترث الفئة الابنة جميع طرق الفئة الأب. وإذا لم تُعد تعريفها، فإنها تعمل دون تغيير.
class Vehicle:
    def start(self): return 'starting'
class Car(Vehicle):
    pass
print(Car().start())

إعادة تعريف الطرق

عرّف اسم الطريقة نفسه في الفئة الابنة لاستبدال إصدار الفئة الأب. وسيُستدعى إصدار الفئة الابنة.
class Shape:
    def area(self): return 0
class Square(Shape):
    def __init__(self, s): self.s = s
    def area(self): return self.s**2
print(Square(4).area())

توسيع سلوك الفئة الأب

استدعِ super().method() داخل الطريقة المعاد تعريفها لتشغيل إصدار الفئة الأب أولًا، ثم أضف السلوك الإضافي.
class Animal:
    def describe(self): return 'I am an animal'
class Dog(Animal):
    def describe(self): return super().describe() + ' and a dog'
print(Dog().describe())

isinstance() و issubclass()

تُعيد isinstance(obj, Parent) القيمة True لمثيلات الفئة الابنة أيضًا. وتتحقق issubclass(Child, Parent) من التسلسل الهرمي للفئات.
class Animal: pass
class Dog(Animal): pass
d = Dog()
print(isinstance(d, Animal))
print(issubclass(Dog, Animal))

إضافة طرق جديدة إلى الفئة الابنة

يمكن للفئة الابنة تعريف طرق جديدة تمامًا لا تملكها الفئة الأب.
class Animal:
    def __init__(self, name): self.name = name
class Dog(Animal):
    def fetch(self): return f'{self.name} fetches!'
print(Dog('Rex').fetch())

السمات المحمية

تشير convention السابقة _ في _name إلى «عدم الوصول من خارج الفئة». ويمكن للفئات الفرعية استخدامها.
class Animal:
    def __init__(self, name): self._name = name
    def name(self): return self._name
class Dog(Animal):
    def bark(self): return f'{self._name} barks'
print(Dog('Rex').bark())

الفئات الأساسية المجرّدة

يفرض from abc import ABC, abstractmethod على الفئات الفرعية تنفيذ الطرق.
from abc import ABC, abstractmethod
class Shape(ABC):
    @abstractmethod
    def area(self): pass
class Circle(Shape):
    def __init__(self, r): self.r = r
    def area(self):
        import math
        return math.pi * self.r**2
print(Circle(3).area())

__bases__ و __mro__

يعرض Dog.__bases__ الفئات الأب المباشرة. ويعرض Dog.__mro__ ترتيب تحليل الطريقة الكامل.
class A: pass
class B(A): pass
class C(B): pass
print(C.__mro__)

تحقق سريع

ماذا تفعل super().__init__() في فئة ابنة؟

مراجعة

الوراثة: class Child(Parent). يتيح super() الوصول إلى الفئة الأب. أعد تعريف الطرق لتغيير السلوك. تتحقق isinstance() من التسلسل الهرمي. وتفرض ABC العقود المجرّدة.

واصل التقدم

تقدّم ممتاز! تابع التقدم لإتقان المفهوم التالي.

الأسئلة الشائعة

هل درس «الوراثة الأحادية» مجاني؟

نعم — نص درس «الوراثة الأحادية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «الوراثة الأحادية»؟

أنشئ فئات فرعية ترث السمات والطرق من فئة أصل تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «الوراثة الأحادية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الوراثة الأحادية
  2. تجاوز الطرق وsuper()
  3. الوراثة المتعددة وMRO
  4. تعدد الأشكال والكتابة بأسلوب البطة
← العودة إلى Python Academy