🌟 مقدمة: لماذا التوريث؟
في عالم البرمجة، نحن لا نحب تكرار الكود. إذا كان عندنا صنف “موظف” وصنف “مدير”، فكلاهما له اسم وراتب. بدلاً من كتابة هذه الخصائص مرتين، نستخدم التوريث. التوريث يسمح لـ “الصنف الابن” بأن يرث كل مميزات “الصنف الأب”، مع إمكانية إضافة ميزات خاصة به.
🏗️ استخدام الدالة super()
عندما يرث الابن من الأب، نحتاج أحياناً لتشغيل “الدالة البانية” للأب داخل الابن. هنا نستخدم الكلمة السحرية super() التي تعني: “يا بايثون، اذهب للأب وأحضر لي خصائصه”.
💻 المثال التطبيقي (نظام أكاديمية قياوي):
لننشئ صنفاً عاماً للشخص، ثم نشتق منه صنفاً للطالب:
الصنف الأب (Parent Class)#
:class Person
:def __init__(self, name, age)
self.name = name
self.age = age
:def show_info(self)
(“{self.name}:الاسم , {self.age}:العمر”f)print
# الصنف الابن (Child Class) يرث من Person
:class Student(Person)
:def __init__(self, name, age, student_id)
# استخدام super لجلب الاسم والعمر من الأب
super().__init__(name, age)
خاصية جديدة خاصة بالابن فقط # self.student_id=student_id
:def welcome(self)
(“مرحباً بالطالب {self.name}، رقمك الجامعي هو {self.student_id}”f)print
# إنشاء كائن من الابن
(“ميمون”, 25, “QY-2026”)s1 = Student
دالة موروثة من الأب # ( ) s1.show_info
دالة خاصة بالابن # ( ) s1.welcome
🔍 مفاهيم أساسية في هذا الدرس:
Inheritance (التوريث): نقل الخصائص من كلاس لآخر.
Parent Class (الأب): الكلاس الأساسي (مثل Person).
Child Class (الابن): الكلاس الذي يرث (مثل Student).
super(): الأداة التي تربط الابن بالأب لتفادي تكرار الأكواد.
💡 نصيحة من أكاديمية قياوي:
“التوريث ليس مجرد توفير للوقت، بل هو تنظيم للعقل. عندما تجعل أصنافك ترث من بعضها، فأنت تبني شجرة عائلة برمجية واضحة تجعل من السهل جداً إضافة ميزات جديدة مستقبلاً دون هدم ما بنيته سابقاً.”
تخيّل معي هذا الموقف 👇
عندك صنف اسمه Person فيه: اسم عمر
وعندك صنف آخر Student يحتاج نفس الخصائص + أشياء إضافية.
❓ هل نعيد كتابة نفس الكود؟
❌ لا
✔️ الحل الاحترافي هو: التوريث (Inheritance)
🧠 ما هو التوريث؟
التوريث هو أن : صنف جديد يرث خصائص ودوال صنف آخر
يعني:
نعيد استعمال الكود
نقلل التكرار
ننظم المشروع
🧠 خلاصة الدرس الصنف الابن يرث كل شيء من الأب
super() أساسي مع init
التوريث هو أساس البرمجة الكائنية .