الكورس

Advertisements

Python Inheritance


Inheritance (الوراثة) ميزة قوية في البرمجة الشيئية OOP.

يشير إلى تعريف class جديد مع تعديل بسيط أو بدون تعديل على class موجودة.

تسمى:

  1. الـ class الرئيسية هي الفئة الموروثة ، وتسمى أيضًا الفئة الأساسية (أو parent).
  2. الـ class الجديدة فئة مشتقة (أو child) وهي الفئة التي ترث من فئة أخرى.

 

Python Inheritance Syntax

class BaseClass:
  Body base class
class DerivedClass(BaseClass):
  Body derived class

💡 ترث الـ class المشتقة ميزات من الفئة الأساسية حيث يمكن إضافة ميزات جديدة إليها.


 

Create a Parent Class

 

يمكن أن يكون أي Class أب (parent)، لذا فإن بناء الجملة هو نفسه إنشاء أي class آخر، كالتالى:

class user:
	
	def __init__(self, name, mail):
		self.name = name
		self.mail = mail
    self.gender = gender
    
    def printmail(self):
      print(self.mail)

# Now, Use the user class to create an object
user_f = user('Hamed', '[email protected]')
user_f.printmail()

 

Create a Child Class

 

لإنشاء class ترث الـ functions من class أخرى، أرسل الـ class الرئيسية كـ parameter عند إنشاء class فرعية، كالتالى:

class another_user(user):
  pass

💡 الآن لدى class الـ user نفس الخصائص والأساليب مثل class الـ another_user.

💡 ملاحظة: استخدم كلمة pass عندما لا ترغب في إضافة أي خصائص أو methods أخرى إلى class.


 

init__() Function__

 

تم إنشاء حتى الآن class فرعي يرث الخصائص والأساليب من أصلها.

نريد إضافة دالة ()__init __ إلى الـ child class [بدلاً من كلمة pass].

مثال للتوضيح:

class another_user(user):
  def __init__(self, name, mail):
    # Add any properties you need ....

للاحتفاظ بتوريث دالة ()__init __  للـ parent، أضف إستدعاء إلى function الـ ()__init __ للـ parent، كالتالى: 

class another_user(user):
  def __init__(self, name, mail):
    user.__init__(name, mail)

تم إضافة دالة ()__init __ بنجاح! وحافظنا على وراثة الـ class الرئيسي، والأن تقدر تضيف دالة في دالة الـ ()__init __.

 

💡 ملاحظات:

  1. يتم استدعاء دالة ()__init __ تلقائيًا في كل مرة يتم فيها استخدام الـ class لإنشاء object جديد.
  2. عند إضافة دالة ()__init __ ، لن ترث الفئة الفرعية دالة ()__init __ للـ parent.
  3. تتجاوز الدالة ()__init __ الخاصة بالـ child وراثة دالة ()__init __ للـ parent.

 

Use [super()] Function

 

تحتوي Python أيضًا على دالة ()super ستجعل الـ child class ترث جميع الـ properties وmethods من أصلها.

باستخدام دالة ()super، لا يتعين عليك استخدام اسم العنصر الأصل ، وسوف يرث تلقائيًا الـ properties وmethods من أصلها، كالتالى:

class another_user(user):
  def __init__(self, name, mail):
    super.__init__(name, mail)

 

Add Properties

class another_user(user):
  def __init__(self, name, mail):
    super.__init__(name, mail)
    self.gender = "male"

في المثال التالى، يجب أن يكون الـ gender متغيرًا “male”، ويتم تمريره إلى class الـ user عند إنشاء كائنات الـ user وللقيام بذلك أضف parameter أخرى في دالة ()__init __، كالتالى:

class another_user(user):
  def __init__(self, name, mail, gender_user):
    super.__init__(name, mail)
    self.gender = gender_user

info = user("Ahmed", "[email protected]", "Male")

 

Add Methods

class another_user(user):
  def __init__(self, name, mail, gender_user):
    super.__init__(name, mail)
    self.gender = gender_user

  def welcome(self):
    print("Hello", self.name, ", Your mail is", self.mail)

💡 إذا قمت بإضافة method في الفصل الفرعي لها نفس الاسم كدالة في الـ class الأصل ، سيتم تجاوز وراثة الـ method الأصل.


 

💡 الزتونة

 

  1. Inheritance (الوراثة) ميزة قوية في البرمجة الشيئية OOP.
  2. يشير إلى تعريف class جديد مع تعديل بسيط أو بدون تعديل على class موجودة.
  3. ترث الـ class المشتقة ميزات من الفئة الأساسية حيث يمكن إضافة ميزات جديدة إليها.
  4. لإنشاء class ترث الـ functions من class أخرى، أرسل الـ class الرئيسية كـ parameter عند إنشاء class فرعية.
  5. باستخدام دالة ()super، لا يتعين عليك استخدام اسم العنصر الأصل ، وسوف يرث تلقائيًا الـ properties وmethods من أصلها.

 



الإبلاغ عن خطأ

×

إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:

[email protected]

شكرًا لك على مساعدتك لنا!

Advertisements