Python Inheritance
Inheritance (الوراثة) ميزة قوية في البرمجة الشيئية OOP.
يشير إلى تعريف class جديد مع تعديل بسيط أو بدون تعديل على class موجودة.
تسمى:
- الـ class الرئيسية هي الفئة الموروثة ، وتسمى أيضًا الفئة الأساسية (أو parent).
- الـ 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', 'hamed@gmail.com')
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 __.
💡 ملاحظات:
- يتم استدعاء دالة ()__init __ تلقائيًا في كل مرة يتم فيها استخدام الـ class لإنشاء object جديد.
- عند إضافة دالة ()__init __ ، لن ترث الفئة الفرعية دالة ()__init __ للـ parent.
- تتجاوز الدالة ()__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", "ahmed@gmail.com", "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 الأصل.
💡 الزتونة
- Inheritance (الوراثة) ميزة قوية في البرمجة الشيئية OOP.
- يشير إلى تعريف class جديد مع تعديل بسيط أو بدون تعديل على class موجودة.
- ترث الـ class المشتقة ميزات من الفئة الأساسية حيث يمكن إضافة ميزات جديدة إليها.
- لإنشاء class ترث الـ functions من class أخرى، أرسل الـ class الرئيسية كـ parameter عند إنشاء class فرعية.
- باستخدام دالة ()super، لا يتعين عليك استخدام اسم العنصر الأصل ، وسوف يرث تلقائيًا الـ properties وmethods من أصلها.
الإبلاغ عن خطأ
×إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:
info@albashmoparmeg.com
شكرًا لك على مساعدتك لنا!