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

السؤال

نشر

عند وراثة صف من قبل صف اخر استطيع من خلاله الوصول الى كل التوابع والمتغيرات في الصف الذي ورثته  إلا الأشياء التي عرفتها ضمن التابع init فعندما أحاول الوصول لها يعطيني خطأ بأنها غير موجودة لذا كيف يمكنني وراثتها ايضا؟

Recommended Posts

  • 1
نشر

إن الـصف الابن يرث كل شيء موجود في الـصف الأب إلا الخصائص التي تم تعريفها كوسطاء بداخل الدالة __init__ و السبب في هذا أن  الدالة __init__  تولد الخصائص لل object و تربطها بالكلاس لحظة إنشاء ال object. أي إذا لم تنشئ كائن من الكلاس لن يتم إستدعاء هذه الدالة أصلاً أي يمكنك القول أن المتحولات المعرفة ضمنها لن تكون موجودة، لذا لايمكن وراثتها بشكل مباشر.
وحل هذه المشكلة يكون كما في المثال التالي، حيث نقوم باستدعاء الدالة __init__  للصف الأب داخل دالة __init__ للصف الابن:

class myname:
    def __init__(self,name="Esraa"):
        self.name=name
        
# نقوم بوراثته
class emp(myname):
    def __init__(self): 
        myname.__init__(self)    #  نقوم باستدعاء باني الصف الاب داخل باني الصف الاب 
        
p = emp() # أخذ غرض من الصف الابن
print(p.name)		# Esraa

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...