الفرق بين المراجعتين ل"Python/staticmethod"
< Python
اذهب إلى التنقل
اذهب إلى البحث
ط (←أمثلة) |
ط (استبدال النص - 'Python/defining-functions' ب'Python/defining_functions') |
||
سطر 52: | سطر 52: | ||
== انظر أيضًا == | == انظر أيضًا == | ||
− | * [[Python/ | + | * [[Python/defining_functions|تعريف الدوال في بايثون]]. |
* [[Python/classmethod|الدالة classmethod() في بايثون]]، لإنشاء تابع صنف. | * [[Python/classmethod|الدالة classmethod() في بايثون]]، لإنشاء تابع صنف. | ||
مراجعة 14:30، 29 مايو 2018
تُحوّل الدّالة staticmethod()
تابعًا إلى تابعٍ ساكن (static method).
البنية العامة
staticmethod(fun)
@staticmethod
المعاملات
fun
الدّالة أو التّابع المُراد تحويله إلى تابعٍ ساكن.
القيمة المعادة
يُحوّل التّابع المُزخرَف إلى تابعٍ ساكن لا يستقبل مُعاملًا أولًا صريحًا (المُعامل المعروف بالاسم self
في التّوابع).
أمثلة
المثال التّالي يوضّح كيفيّة إنشاء تابع ساكن باستعمال الدّالة staticmethod
كمُزخرِف:
>>> class A:
... @staticmethod
... def hello(): # لاحظ أنّ التّابع السّاكن لا يستقبل أيّ مُعامل تلقائيّ كما في التّوابع العاديّة
... return 'Hello'
...
...
>>> A.hello() # يُمكن استدعاء التّابع على الصّنف مُباشرةً
'Hello'
>>> A().hello() # ويمكن استدعاؤه على نُسخة من الصّنف كذلك
'Hello'
يُمكن للتّوابع السّاكنة أن تقبل مُعاملات كذلك كما الدّوال العاديّة:
>>> class A:
... @staticmethod
... def add(x, y):
... return x+y
...
...
>>> A.add(5, 3)
8
>>> A().add(1, 3)
4
ملاحظات
- التّوابع السّاكنة مُشابهة لتلك الموجودة في Java أو C++.
- كما هو الحال مع جميع المُزخرفات، يُمكن كذلك استدعاء الدّالة
staticmethod()
كدالة عاديّة والتعامل مع نتيجة الاستدعاء. يُطلَبُ هذا أحيانًا عندما ترغب بالحصول على مرجع يُشير إلى دالّة من داخل الصّنف وتريد تفادي التحويل الآلي الذي يُحول الدّالة إلى دالّة نُسخة (instance method). استعمل ما يلي في مثل هذه الحالات:
class C:
builtin_open = staticmethod(open)
انظر أيضًا
- تعريف الدوال في بايثون.
- الدالة classmethod() في بايثون، لإنشاء تابع صنف.