اذهب إلى المحتوى
  • 0

هل يمكن استدعاء تابع صنف الأب من صنف الابن في بايثون؟

ahmed1990

السؤال

أريد أن أقوم باستدعاء توابع صنف الأب من الصنف الابن، هنالك طريقة لفعل ذلك في الجافا والبيرل عن طريق استخدام super فهل توجد طريقة لفعل ذلك في بايثون؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

توجد في بايثون أيضا دالة super كما في اللغات الأخرى وتعمل تقريبا بنفس الطريقة وصياغتها العامة كالتالي:

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

هذه الدالة مفيدة جدا عند حاجتك إلى الوصول إلى توابع موروثة تم تجاوزها في الصنف. ترتيب البحث هو نفسه الذي تستخدمه دالة getattr() إلا أنه يتم تجاوز النوع.
مثال بسيط على استخدام super:

class Foo(Bar):
    def baz(self, arg):
        return super(Foo, self).baz(arg)

ملاحظة: يمكنك استخدام الدالةsuper فقط في أصناف الأساليب الجديدة.
كما أنصحك أيضا باستخدام CLASS.__bases__ كما في المثال التالي:

class A:
   def __init__(self):
        print "I am Class %s"%self.__class__.__name__
        for parentClass in self.__class__.__bases__:
              print "   I am inherited from:",parentClass.__name__
              #parentClass.foo(self) <- call parents function with self as first param
class B(A):pass
class C(B):pass
a,b,c = A(),B(),C()

المصدر

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...