الانتقال إلى المحتوى الرئيسي

كيفية تمرير فئة إلى وظيفة بيثون: أفضل الطرق

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

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

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

  1. إنشاء كائن فئة
  2. استخدام فئة كوسيطة
  3. الميراث من فئة
  4. تمرير فئة كسلسلة
  5. استيراد فئة من وحدة نمطية أخرى
  6. باستخدام الديكور لتمرير فئة
  7. إنشاء مثيل لفئة داخل دالة
  8. سؤال وجواب
  9. كيف يمكنني تمرير فئة إلى وظيفة?
  10. كيف يمكنني تمرير أسلوب الطبقة إلى وظيفة?
  11. هل من الممكن لتمرير فئة كقيمة الإرجاع من وظيفة?
  12. هل يمكنني تمرير فئة إلى وظيفة لتغيير سماتها?

إنشاء كائن فئة

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

يتم تنفيذ الخطوات التالية لإنشاء كائن فئة:

  1. تحديد فئة باستخدام الكلمة الطبقة.
  2. تحديد منشئ الفئة باستخدام طريقة__ الحرف الأول__. يمكن تعريف القيم الأولية لسمات الكائن داخل المنشئ.
  3. إنشاء كائن فئة باستخدام اسم الفئة والأقواس.

مثال على إنشاء كائن فئة:

شخص الطبقة:

ديف _ _ الحرف الأول _ _ (الذات ، الاسم ، العمر):

النفس.الاسم = الاسم

النفس.العمر = العمر

شخص1 = شخص ("إيفان" ، 25)

في المثال أعلاه ، يتم إنشاء كائن من فئة الشخص. يأخذ منشئ فئة الشخص حجتين-الاسم والعمر. ثم يتم إنشاء كائن شخص 1 باسم "إيفان" وعمر 25.

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

استخدام فئة كوسيطة

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

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

مثال:

شخص الطبقة:

ديف _ _ الحرف الأول _ _ (الذات ، الاسم ، العمر):

self.name = الاسم

النفس.العمر = العمر

مواطنه إدخال (النفس):

طباعة (و " مرحبا! اسمي {self.name } وأنا {النفس.العمر} سنة.")

مواطنه تحية (شخص):

شخص.أعرض()

شخص = شخص ("آنا" ، 25)

تحية (شخص)

في الكائن المنقول.

سوف يؤدي إلى الرسالة التالية:

مرحبا! اسمي آنا وأنا 25 سنة.

وبالتالي ، فإن استخدام فئة كوسيطة دالة يسمح لك بتبسيط الكود وتوفير المرونة للبرنامج.

الميراث من فئة

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

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

للإشارة إلى الميراث من فئة ، حدد اسم الفئة الأصل بين قوسين بعد اسم الفئة الخلف:

فئة الأطفال (فئة الوالدين):

تمريرة

في فئة فرعية ، يمكنك تجاوز أساليب الفئة الأصل ، إضافة سمات وأساليب جديدة ، واستدعاء أساليب الفئة الأصل باستخدام وظيفة سوبر ().

مثال:

فئة الوالدين:

ديف _ _ الحرف الأول__(الذات ، الاسم):

self.name = الاسم

طريقة مواطنه (النفس):

طباعة ("طريقة الأصل")

فئة الأطفال (فئة الوالدين):

طريقة مواطنه (النفس):

سوبر ().طريقة()

طباعة ("طريقة الطفل")

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

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

تمرير فئة كسلسلة

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

، الذي ينفذ التعبير الذي تم تمريره. في هذه الحالة ، سيكون التعبير عبارة عن سلسلة تحتوي على اسم الفئة.

هنا مثال يدل على نقل فئة كسلسلة:

فئة ميكلاس:

ديف _ _ الحرف الأول__(الذات ، الاسم):

self.name = الاسم

ديف كريتيوبجيكت(كلاس_نام ، بارام):

الصف_أوبج = التقييم (اسم_الصف)

أوبج = كلاس_ أوبج(بارام)

عودة الكائنات

اسم_الصف = "ميكلاس"

كائن = إنشاء _ كائن(اسم_ فئة، "مثال")

طباعة(obj.name ) # مخرجات "مثال"

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

.

استيراد فئة من وحدة نمطية أخرى

. لاستيراد فئة من وحدة نمطية أخرى ، تحتاج إلى تحديد المسار إلى الوحدة النمطية واسم الفئة.

. لنلق نظرة على كيفية استيراد هذه الفئة:

من بلدي وحدة استيراد ميكلاس

. الآن يمكننا استخدام هذه الفئة في برنامجنا.

الغرض. على سبيل المثال:

من بلدي ميكلاس استيراد ميكلاس كما مولودية

.

:

من مشغل استيراد الوحدة الخاصة بي *

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

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

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

باستخدام الديكور لتمرير فئة

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

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

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

وفيما يلي مثال على استخدام الديكور لتمرير فئة إلى وظيفة:

"'بايثون

مواطنه أضاف_عج_طريقة (كلس):

مواطنه الحصول على العمر (النفس):

السنة الحالية = التاريخ والوقت.الآن ().السنة

العمر = العام الحالي-الذات.السنة

عمر العودة

كلس.الحصول على_العمر = الحصول على_العمر

عودة كلس

تضمين التغريدة

سيارة فئة:

ديف _ _ الحرف الأول__(النفس ، وجعل ، نموذج ، السنة):

النفس.جعل = جعل

النفس.نموذج = نموذج

النفس.السنة = السنة

سيارة = سيارة ("تويوتا" ، "كامري" ، 2010)

طباعة (سيارة.الحصول على_العمر())

«`

Add "إضافة __طريقة" ، car "سيارة".. يضيف المصمم طريقة "الحصول على العمر" الجديدة إلى فئة "السيارة" ، والتي تحسب عمر السيارة. ثم قمنا بتطبيق هذا الديكور على فئة" السيارة "باستخدام الرمز"@". بعد ذلك ، يمكننا استدعاء طريقة "الحصول على العمر" على مثيل فئة "السيارة" للحصول على عمر السيارة.

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

إنشاء مثيل لفئة داخل دالة

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

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

مثال:

شخص الطبقة:

ديف _ _ الحرف الأول__(الذات ، الاسم):

self.name = الاسم

ديف برينت_اسم():

شخص = شخص ("جون")

طباعة(person.name )

اسم الطباعة () # الإخراج: جون

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

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

سؤال وجواب

كيف يمكنني تمرير فئة إلى وظيفة?

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

كيف يمكنني تمرير أسلوب الطبقة إلى وظيفة?

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

هل من الممكن لتمرير فئة كقيمة الإرجاع من وظيفة?

نعم ، يمكنك تمرير فئة كقيمة إرجاع دالة. للقيام بذلك ، حدد نوع الإرجاع كفئة في توقيع الوظيفة. على سبيل المثال ، إذا كانت وظيفتك ترجع مثيل فئة ميكلاس ، ثم يمكنك الكتابة على النحو التالي: "ديف وظيفتي() -> ميكلاس".

هل يمكنني تمرير فئة إلى وظيفة لتغيير سماتها?

نعم ، يمكنك تمرير فئة إلى وظيفة وتغيير سماتها. إذا كنت بحاجة إلى تغيير سمات فئة ، يمكنك تمرير مثيل من الفئة إلى وظيفة وتغيير السمات مباشرة باستخدام تدوين نقطة. على سبيل المثال ، إذا كان لديك كائن أوبج من فئة ميكلاس وتحتاج إلى تغيير سمة السمة ، ثم يمكنك الكتابة على النحو التالي: "ديف مي_فونكتيون(أوبج): أوبج.السمة = قيمة جديدة".