"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ما الفرق بين طرق المثيل وطرق الفصل في بايثون؟

ما الفرق بين طرق المثيل وطرق الفصل في بايثون؟

تم النشر بتاريخ 2024-11-06
تصفح:836

What is the difference between instance methods and class methods in Python?

الفصل مقابل طرق المثيل

يوصي دليل أسلوب PEP 8 الخاص بـ Python باستخدام "self" للوسيطات الأولى لطريقة المثال و"cls" للفئة طريقة الحجج الأولى. يعد فهم التمييز بين هذين النوعين من الأساليب أمرًا بالغ الأهمية للبرمجة الموجهة للكائنات بشكل فعال.

طرق المثيل

ترتبط أساليب المثيل بمثيلات محددة من الفصل. إنهم يعملون على بيانات المثيل ويتلقون عادةً "الذات" كوسيطة أولى لهم. عند الوصول إلى أسلوب مثيل، على سبيل المثال، object.method()، يتم تمرير المثيل تلقائيًا إلى الأسلوب.

على سبيل المثال، ضع في اعتبارك تعريف الفئة التالي:

class Person:
    def __init__(self, name):
        self.name = name

    def greet(self):
        print("Hello, my name is", self.name)

هنا، "greet()" هي طريقة مثيل يمكن استدعاؤها في أي مثيل لفئة "Person" باستخدام "object.greet( )".

أساليب الفصل

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

يوضح مقتطف التعليمات البرمجية التالي طريقة الفصل:

class Math:
    @classmethod
    def sum(cls, a, b):
        return a   b

يأخذ الأسلوب "Math.sum()" وسيطتين يتم إضافتهما معًا وإرجاعهما. نظرًا لأنها طريقة فئة، يمكنك استدعاؤها مباشرة كـ Math.sum(1, 2) للحصول على النتيجة.

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

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3