دليل كامل لمفاهيم OOPs في بايثون

نشرت: 2020-10-22

كانت البرمجة الشيئية أو OOP جزءًا لا يتجزأ من عالم البرمجيات لفترة من الوقت الآن. إنه نموذج برمجة ممتاز يوفر مستوى معينًا من الحرية ويعزز إنجازات البرمجة للمطور.

هناك مفاهيم ومبادئ أساسية معينة يجب أن يعرفها كل مطور. إنهم يقودون الفرضية لتطوير تطبيق باستخدام هذا النموذج.

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

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

ما هي البرمجة الشيئية؟

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

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

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

مثال ممتاز للمساعدة في فهم هذا سيكون برنامج بريد إلكتروني.

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

هذه هي الطريقة التي يعمل بها OOP. ومع ذلك ، فإن بعض المفاهيم تدفع هذا إلى العمل. دعونا نلقي نظرة سريعة على هذه المفاهيم وكيف تعمل.

قراءة: هل بايثون لغة كائنية التوجه؟

كيف تحدد فئة؟

الفئة هي التي تحدد كل كائن ، وهي جانب مهم من مفاهيم OOPs في Python . لنفترض أن لديك أربعة أشياء ، مثل العينين والأذنين والفم والأنف. هذه أجزاء من الوجه ، وهي الطبقة.

لنبدأ في كيفية تحديد فئة.

لنفترض أنك تتحدث عن فصل دراسي يسمى البريد الإلكتروني.

البريد الإلكتروني للفصل الدراسي:

يمر

هذه هي الطريقة التي يتم بها تعريف الطبقة. استخدم "المرور" بحيث لا توجد أخطاء عند تشغيل الشفرة في مترجم.

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

طريقة ._init_ () هي ما يمكن أن يكون مفيدًا عند تعريف الخصائص داخل فئة.

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

ستكون المعلمة الأولى لهذه الطريقة دائمًا هي self ، حتى عند تعيين معلمات متعددة لها.

إذن ، ماذا يحدث في هذه الحالة؟ لنفترض أنك أنشأت فصلًا جديدًا. يتم نقل المثيل إلى المعلمة الذاتية. نتيجة لذلك ، يمكن لـ ._init_ () تعيين خصائص جديدة للكائن المحدد.

إذا كنت لا تزال تفكر في كيفية استخدامه ، فلنفهمه من خلال مثال.

البريد الإلكتروني للفصل الدراسي:

def ._init_ (الذات ، الاسم ، المستلم ، العنوان):

self.name = الاسم

self.recipient = المستلم

self.address = العنوان

دعنا نكسر هذا الكود من أجل فهم أفضل.

المسافة البادئة المعبر عنها في الكود أعلاه أمر بالغ الأهمية. يجب أن تتطابق مع نفس الشيء عند كتابة برنامجك باستخدام OOPs في Python . دعونا نفهم المتغير الذاتي في الكود أعلاه.

ينتج عن self.name سمة تسمى الاسم. يتم تعيين قيمة معلمة الاسم لهذه السمة. وبالمثل ، يتم تعيين السمات والقيم للمتغيرات الذاتية الأخرى أيضًا.

تُعرف هذه السمات باسم المثيل. ستحتاج إلى تحديد قيمة كل سمة مذكورة في مثيل معين. لنفترض أن هناك نوعين من رسائل البريد الإلكتروني - الترحيب والرعاية. قد يختلف مستلم البريد الإلكتروني في كلتا الحالتين (رسائل البريد الإلكتروني الترحيبية ورسائل البريد الإلكتروني المساعدة).

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

البريد الإلكتروني للفصل الدراسي:

# سمة الفئة

البريد الإلكتروني: "رسائل البريد الإلكتروني الواردة"

def ._init_ (الذات ، الاسم ، المستلم ، العنوان):

self.name = الاسم

self.recipient = المستلم

self.address = العنوان

تعرف على المزيد حول: كيفية برمجة مشروعات Java وتجميعها وتشغيلها

فهم متغيرات الفئة والمثال

لنأخذ المثال أعلاه حيث أنشأنا سمة فئة بالإضافة إلى متغيرين حالة لفهم OOPs في Python بشكل أفضل.

البريد الإلكتروني للفصل الدراسي:

البريد الإلكتروني: "رسائل البريد الإلكتروني الواردة"

def ._init_ (الذات ، الاسم ، المستلم ، العنوان):

self.name = الاسم

self.recipient = المستلم

self.address = العنوان

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

>>> البريد الإلكتروني ()

Traceback (آخر مكالمة أخيرة):

ملف “<pyshell # 6>” ، السطر 1 ، في <module>

بريد الالكتروني ()

TypeError: __init __ () يفتقد 4 وسيطات موضعية: "الاسم" و "المستلم" و "العنوان"

يمكننا إضافة قيمة مباشرة بعد اسم الفئة.

Nurture Email = Email (Nurture، David، [email protected])

البريد الإلكتروني الترحيبي = البريد الإلكتروني (مرحبًا ، ديزي ، [email protected])

باستخدام الكود أعلاه ، قمنا بإنشاء حالتين ، لرسالة بريد إلكتروني رعاية وبريد إلكتروني ترحيبي. دعنا نتحقق من __init __ () المحددة بعد مثيل الفئة للشفرة أعلاه. نرى أربعة معايير ، بما في ذلك الذات. ومع ذلك ، لم يتم ذكر أي متغير لنفسه. دعنا نفهم لماذا؟

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

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

اقرأ أيضًا: يجب قراءة 47 أسئلة وأجوبة مقابلة OOPS للطلاب الجدد وذوي الخبرة

تلخيص لما سبق

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

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

إذا كنت مهتمًا بتعلم علم البيانات لتكون في مقدمة التطورات التكنولوجية السريعة ، فراجع دبلوم PG upGrad & IIIT-B في علوم البيانات واكتسب مهارات المستقبل.

لماذا نستخدم OOPs؟

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

ما هو الفصل؟

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

ما هو متغير الحالة؟

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