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

الوراثة في بايثون

Esraa Mohamed5

السؤال

عند وراثة صف من قبل صف اخر استطيع من خلاله الوصول الى كل التوابع والمتغيرات في الصف الذي ورثته  إلا الأشياء التي عرفتها ضمن التابع 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...