super() وكيل الصنف الأب

آخر تحديث: 2026-09-22

super() وكيل الصنف الأب

super() يُعيد كائن وكيل للصنف الأب؛ يمكن استدعاء تنفيذ الصنف الأب داخل دوال الصنف الابن.

التصنيفالدوال المدمجة
النوعدالة مدمجة
إصدار بايثونall

📝 الصياغة

super([type[, object-or-type]])

⚙️ المعاملات

type اختياريThe class; the zero-arg form infers it.(القيمة الافتراضية:None)
obj اختياريAn instance or class for MRO resolution.(القيمة الافتراضية:None)

القيمة المُعادة:A proxy to the next class in the MRO; methods can be called through it.

💥 الاستثناءات

▶ مثال

عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:

المخرجات:

A.hello
B.hello
المزيد من الحالات قادم قريباً — تابعونا.

❓ أسئلة شائعة

Qما الذي يفعله super()؟
Aيستدعي تنفيذ الأب الذي يحمل نفس الاسم من أسلوب صنف فرعي: super().hello() يجد ويستدعي أسلوب hello لـ «الصنف التالي» في MRO.
Qلماذا يجب استدعاء super() داخل أسلوب صنف؟
Aالصيغة بدون وسيطات تستدل تلقائيًا على «الصنف الحالي والمثيل الحالي»؛ استدعاؤها خارج صنف (مثل دالة عادية) يُثير RuntimeError: super(): no arguments.
Qمتى يجب كتابة super().__init__()؟
Aعندما يكتب الصنف الفرعي __init__ ويظل يريد من الصنف الأب إتمام تهيئته؛ بدونها لا يُنفّذ __init__ الأب (إلا إذا كان الأب هو object).
Qبأي ترتيب يجد super() الآباء في الوراثة المتعددة؟
Aيتبع MRO (ترتيب حل الأساليب). super() ليس «الأب المباشر» بل «الصنف التالي في MRO»، ومع الوراثة المتعددة يعالج الوراثة المعينية بشكل صحيح ويجنب استدعاء الأب مرتين.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%