الوراثة في بايثون | وراثة بايثون [مع مثال]

نشرت: 2020-12-14

Python هي واحدة من أشهر لغات البرمجة. على الرغم من الانتقال المليء بالصعود والهبوط من إصدار Python 2 إلى Python 3 ، فقد شهدت لغة البرمجة الموجهة للكائنات قفزة هائلة في شعبيتها.

إذا كنت تخطط لمهنة كمطور Python ، فلا بد أن تحصل على تعويضات أعلى. نظرًا لأن متوسط ​​الراتب لمطور Python يبلغ حوالي 119،082 دولارًا في السنة. ولكن ، قبل المضي قدمًا في برنامج تعلم Python ، إليك شيء يجب أن تعرفه أولاً - الوراثة في Python. تحقق من شهادات علوم البيانات الخاصة بنا إذا كنت حريصًا على اكتساب الخبرة في Python وغيرها من الأدوات.

لنبدأ أولاً بما هو الميراث بالضبط في بايثون؟

جدول المحتويات

ما هو الميراث في بايثون؟

تمامًا مثل العلاقة بين الوالدين والطفل ، تعمل الوراثة على الفئات المشتقة بالنسبة للفئة الأساسية. ترث كل فئة "مشتقة" من فئة "أساسية". يتم تمثيل الميراث في UML أو لغة النمذجة الموحدة. إنها لغة نمذجة قياسية تتضمن مجموعة متكاملة من الرسوم البيانية لمساعدة المطورين على تحديد عناصر أنظمة البرامج وهيكلها وتوثيقها.

تحدد علاقة الوراثة الفئات التي ترث من الفئات الأخرى على أنها فئات مشتقة أو فئة فرعية أو فئات فرعية. تبقى الفئة الأساسية هي المصدر الذي ترث منه فئة فرعية. على سبيل المثال ، لديك فئة أساسية من "حيوان" و "الأسد" هي فئة مشتقة. سيكون الميراث أسد حيوان.

إذن السؤال هو ماذا ترث فئة "الأسد" من "الحيوان"؟

فئة "الأسد" ترث

  • واجهه المستخدم
  • تنفيذ

ملاحظة: يمكنك استبدال كائنات الفئة المشتقة بكائنات الفئة الأساسية في تطبيق يُعرف باسم مبدأ استبدال Liskov . يشير إلى أنه إذا كان برنامج الكمبيوتر يحتوي على كائن P كنوع فرعي لـ Q ، فيمكنك بسهولة استبدال P بـ Q دون تغيير الخصائص.

الخروج أيضا: راتب مطور Python في الهند

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

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

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

الميراث الواحد

لقد رأينا بالفعل ما هو الميراث الفردي - وراثة الفئة "المشتقة" من الفئة "الأساسية". دعونا نفهم ذلك من خلال مثال ،

فئة الدولة:

def ShowCountry (ذاتي):

طباعة ("هذه إسبانيا") ؛

فئة الدولة (الدولة):

def ShowState (ذاتي):

طباعة ("هذه هي الدولة") ؛

st = State () ؛

st.ShowCountry () ،

st.ShowState () ،

الميراث متعدد المستويات

تتكون Python من عدة كائنات ، ومع الوراثة متعددة المستويات ، هناك احتمالات لا حصر لها لإعادة استخدام وظائف الطبقة. يتم توثيق الوراثة متعددة المستويات في كل مرة ترث فيها فئة مشتقة فئة مشتقة أخرى. لا يوجد حد لعدد الفئات المشتقة التي يمكن أن ترث الوظائف ، ولهذا السبب تساعد الوراثة متعددة المستويات على تحسين إمكانية إعادة الاستخدام في بايثون.

هنا مثال على الميراث متعدد المستويات

فئة الحيوان:

مواطنه يتحدث (النفس):

طباعة ("حديث الحيوان")

# يرث الطفل من فئة الكلب فئة الحيوانات الأساسية

فئة الكلب (حيوان):

def bark (الذات):

طباعة ("نباح كلب")

# الطفل فئة Dogchild يرث طفل آخر من فئة Dog

فئة الكلب

مواطنه يأكل (النفس):

طباعة ("أكل الخبز ...")

د = DogChild ()

d.bark ()

د. الكلام ()

d.eat ()

تعدد الميراث

تمكن Python المطورين من وراثة وظائف وخصائص متعددة من فئات أساسية مختلفة في فئة مشتقة واحدة. إنها في الغالب ميزة رائعة لأنها يمكن أن تسمح لك بوراثة تبعيات متعددة بدون أدوات أو ترميز مكثف.

لنلقِ نظرة على مثال للإرث المتعدد.

حساب الفئة 1:

التلخيص (النفس ، أ ، ب):

إرجاع أ + ب ؛

حساب الفئة 2:

الضرب def (النفس ، أ ، ب):

العودة أ * ب ؛

فئة مشتقة (حساب 1 ، حساب 2):

def القسمة (النفس ، أ ، ب):

العودة أ / ب ؛

د = مشتق ()

طباعة (مجموع ت (10،20))

طباعة (د. الضرب (10،20))

طباعة (تقسيم (10،20))

تحقق من: كيفية تحويل الكلام إلى نص باستخدام Python

كيفية التعرف على فئة مشتقة؟

تأتي لغة Python مع وظيفة issubclass () مضمنة تساعد المطورين على التحقق مما إذا كانت الفئة مشتقة أم فئة أساسية. بمجرد تشغيل هذه الوظيفة ، فإنها ترجع بالنتيجة "True" للفئة الفرعية أو الفئة المشتقة ، بينما False for Base class.

يمكن للمطور التحقق من الفصل من خلال هذا المثال.

فئة myAge:

العمر = 36

فئة myObj (myAge):

الاسم = "جون"

العمر = myAge

x = issubclass (myObj، myAge)

كيفية إنشاء تسلسل هرمي للفصل في بايثون؟

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

سيقوم نظام الموارد البشرية بمعالجة كشوف المرتبات لعمال الشركة المختلفين ؛ يتم تحديد كل عامل من خلال معرف ولديه وظائف مختلفة في كشوف المرتبات ليتم حسابها.

لنقم أولاً بإنشاء فئة كشوف المرتبات كعنصر "أساسي".

# في hr.py

فئة نظام الرواتب:

def calculate_payroll (النفس ، العمال):

طباعة ("حساب كشوف المرتبات")

طباعة ('===================')

للعاملين بالعاملين:

طباعة (f'Payroll for: {worker.id} - {worker.name} ')

print (f'- تحقق من المبلغ: {worker.calculate_payroll ()} ')

مطبعة(")

ينفذ نظام الرواتب طريقة .calculate_payroll () التي تجمع معلومات العامل وتطبع معرفه واسمه وتتحقق من مبلغ الرواتب . الآن ، تقوم بتشغيل عامل فئة أساسي يتعامل مع الواجهة القياسية لكل نوع عامل:

# في hr.py

عامل صف:

def __init __ (ذاتي ، معرف ، اسم):

self.id = معرف

self.name = الاسم

يؤدي إنشاء فئة أساسية للعمال لجميع أنواع العمال في الشركة إلى تسهيل التسلسل الهرمي لنظام الموارد البشرية. يتم تعيين اسم ومعرف لكل عامل. يتطلب نظام الموارد البشرية من العامل تقديم بيانات تتعلق براتبه الأسبوعي من خلال واجهة .calculate_payroll (). قد يختلف تنفيذ هذه الواجهة حسب نوع العامل.

يجب أن تقرأ: أسئلة مقابلة بايثون

خاتمة

هنا ، تعلمنا إنشاء فئات بايثون مختلفة ، وإنشاء علاقات بينها ، وحتى تحديد التسلسل الهرمي للفئة. لكن الوراثة في بايثون لا تقتصر على الوظائف المذكورة هنا.

شهادة متقدمة في التعلم الآلي والذكاء الاصطناعي: دخلت IIT madras ، وهي واحدة من أفضل المؤسسات التعليمية في الهند ، في شراكة مع upGrad لتقديم دورة متقدمة في التعلم الآلي للأفراد ليكون لديهم معرفة كاملة بالتعلم الآلي من خلال هذه الدورة.

إذا كنت مهتمًا بالتعرف على علوم البيانات ، فراجع برنامج IIIT-B & upGrad التنفيذي PG في علوم البيانات الذي تم إنشاؤه للمهنيين العاملين ويقدم أكثر من 10 دراسات حالة ومشاريع ، وورش عمل عملية عملية ، وإرشاد مع خبراء الصناعة ، 1 - في 1 مع موجهين في الصناعة ، أكثر من 400 ساعة من التعلم والمساعدة في العمل مع الشركات الكبرى.

لماذا تعتبر الوراثة مهمة في بايثون؟

يشير الميراث إلى عملية نقل خصائص فئة أصل إلى فئة فرعية. إنه مفهوم البرمجة الشيئية (OOP) وهو مهم في بايثون. ذلك لأن الوراثة توفر إمكانية إعادة استخدام الكود ، مما يعني أنه بدلاً من كتابة نفس الكود مرارًا وتكرارًا ، يمكننا أن نرث السمات التي نطلبها في فئة فرعية. من السهل أيضًا فهمها وتنفيذها لأنها تصور علاقة حقيقية بين فصول الوالدين والطفل. لها طبيعة متعدية. نظرًا لأن جميع الفئات الفرعية ترث الخصائص من والديها ، فإن أي فئات فرعية ستستخدم أيضًا وظائف فئة الأصل.

هل الوراثة ضرورية أثناء تعلم بايثون؟

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

في Python ، ما أنواع الوراثة غير المدعومة؟

تسمح Python بجميع أشكال الوراثة ، بما في ذلك الوراثة المتعددة ، على عكس لغات البرمجة الموجهة للكائنات الأخرى. من الممكن بناء فئات جديدة من تلك الموجودة مسبقًا باستخدام مفهوم الوراثة. هذا يسهل إعادة استخدام الكود. يتم استخدام الطرق المحددة في الفئة الرئيسية أيضًا في الفصل الفرعي. بينما تتيح C ++ أيضًا هذا النوع من الوراثة ، فإنها تفتقر إلى منهجية Python المتقدمة والمصممة جيدًا. تقدم Python أيضًا الميراث المختلط ، والذي يسمح لنا بتنفيذ العديد من أنواع الوراثة في جزء واحد من التعليمات البرمجية. نظرًا لأن إعادة استخدام الكود يمثل قوة وراثة ، فهو مفيد في مجموعة واسعة من التطبيقات عند العمل مع Python.