الفرق بين المراجعتين ل"Python/staticmethod"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 16: سطر 16:
  
 
== أمثلة ==
 
== أمثلة ==
المثال التّالي يوضّح كيفيّة إنشاء تابع ساكن:
+
المثال التّالي يوضّح كيفيّة إنشاء تابع ساكن ياستعمال الدّالة <code>staticmethod</code> كمُزخرِف:
 
<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">
 
>>> class A:
 
>>> class A:
سطر 42: سطر 42:
 
4
 
4
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
== ملاحظات ==
 
== ملاحظات ==
 
* التّوابع السّاكنة مُشابهة لتلك الموجودة في Java أو C‎+‎+‎.
 
* التّوابع السّاكنة مُشابهة لتلك الموجودة في Java أو C‎+‎+‎.

مراجعة 15:21، 17 مايو 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)

انظر أيضًا

مصادر