English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في تعلم كود بايثون، عندما ترى أن بعض الطرق في الكائنات، فإن أول معامل هو cls، وأحياناً هو self، بعد المعرفة، تبين أن بايثون لا يقيّد اسم أول معامل في الطرق في الكائن، يمكن أن يكون self أو cls، ولكن بناءً على العادة الشائعة، يستخدم self عادةً في طرق الكائن، بينما يستخدم cls عادةً في طرق الكائن، لا يحتاج إلى استخدام معامل افتراضي في الطرق الثابتة. في الكود التالي، فإن أول معامل في طريقة InstanceMethod هو self الافتراضي، يمكن تغيير self إلى أي اسم ليعكس ذلك دون تأثير. عند استدعاء الكائن، يجب أن يتم استيفاء متطلبات عدد المعاملات (باستثناء وجود *args)، مثل في السطر 13، إذا لم يتم استدعاء الكائن بمعاملات، سيتم عرض خطأ. نفس الأمر ينطبق على عدد معاملات الطريقة الخاصة بالكائن، مثل في السطر 16، سيتم عرض خطأ. واحدة من الميزات الرئيسية للطرق الخاصة بالكائن هي أنها يجب أن يتم تقييدها بكائن، سيقوم معالج بايثون بتقديم الكائن نفسه إلى الطريقة، كما هو موضح في السطر 14، ولكن لا يمكن استدعاء الطريقة مباشرة باستخدام InstanceMethod.f1().
class InstanceMethod(object): def __init__(self, a): self.a = a def f1(self): print 'This is {0}.'.format(self) def f2(self, a): print 'Value:{0}'.format(a) if __name__ == '__main__': # im = InstanceMethod() im = InstanceMethod('233') im.f1() # im.f2() im.f2(233)
الأساليب الثابتة والكلاسيكية تحتاج إلى استخدام مديرين، يتم استخدامهما على التوالي هي @staticmethod و @classmethod.الأساليب الثابتة ليست لها علاقة بالفئة، أعتقد أنها هي الأساليب العامة المدمجة في الفئة، مثل المثال التالي، يمكن استدعاء الأسلوب الثابت باستخدام المثال أو بدون استخدام المثال. في الأساليب الكلاسيكية، المعامل الأولي الذي يتم استخدامه هو cls، يمكن أيضًا استدعاء الأسلوب الكلاسيكي بدون مثال مباشرة باستخدام الفئة. بالنسبة لهذه الأساليب الثلاثة المختلفة، يتم استخدامها كما هو موضح في المثال. إذًا، ما هي الفوائد الخاصة بالأساليب المثالية مقارنة بالأساليب المثالية والثابتة؟
في الأساليب الكلاسيكية، سواء تم استدعاء الأسلوب باستخدام المثال أو باستخدام الفئة، يتم إرسال الفئة كمعامل أولي، والذي هو الفئة نفسها. إذا تم توريث الفئة التي تستخدم الأسلوب الكلاسيكي، فإن جميع الفئات الفرعية ستتمتع بهذا الأسلوب، وسيشير هذا الأسلوب تلقائيًا إلى الفئة الفرعية نفسها، هذا الخصائص مفيدة جدًا في الوظائف الصناعية. الأساليب الثابتة ليست لها علاقة بالفئة أو المثال، يمكن استخدام الأساليب العامة بدلاً منها، ولكن يمكن استخدام الأساليب الثابتة لتنظيم الكود بشكل أفضل، ولتجنب الفوضى عند زيادة حجم الكود. يمكن استبدال الأساليب الكلاسيكية بالأساليب الثابتة. لا يمكن تعديل الأساليب الثابتة في التوريث.
class test(object): def instance_method(self): print 'This is {0}'.format(self) @staticmethod def static_method(): print 'This is static method.' @classmethod def class_method(cls): print 'This is {0}'.format(cls) if __name__ == '__main__': a = test() a.instance_method() a.static_method() a.class_method() print '----------------------------------------' # test.instance_method() test.static_method() test.class_method()
هذا هو نهاية محتوى هذا المقال، نأمل أن يكون محتوى هذا المقال قد ساعدكم في التعلم أو العمل، ونأمل أيضًا أن تحصلوا على دعم كبير لتعليم呐喊!
البيان: محتوى هذا المقال تم جمعه من الإنترنت، ويتمتع المالك الأصلي بحقوق الطبع والنشر، يتم جمع المحتوى من مساهمات المستخدمين عبر الإنترنت بشكل تلقائي، ولم يكن هذا الموقع يمتلك حقوق الملكية، ولم يتم تعديل المحتوى بشكل يدوي، ولا يتحمل هذا الموقع أي مسؤولية قانونية تتعلق بذلك. إذا رأيت محتوى يشتبه في أنه مخالف للحقوق النشرية، فالرجاء إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال '#' ب '@') لإبلاغنا، وقدم الأدلة ذات الصلة، وسيتم حذف المحتوى المزعوم فور التحقق منه.