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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(إضافة الصّفحة)
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:الدالة <code>functools.partialmethod()‎</code> في بايثون}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:الدالة <code>functools.partialmethod()‎</code> في بايثون}}</noinclude>
تعيد الدّالة <code>functools.partialmethod()‎</code> واصفًا يتصرّف مثل كائنات <code>partial</code>، إلّا أنّه مُصمّم ليُستخدم كتعريف تابع (method definition) عوضًا عن أن يكون قابلا للاستدعاء (callable) مُباشرة.
+
تعيد الدّالة <code>functools.partialmethod()‎</code> واصفًا يتصرّف مثل كائنات <code>[[Python/functools/partial|partial]]</code>، إلّا أنّه مُصمّم ليُستخدم كتعريف تابع (method definition) عوضًا عن أن يكون قابلا للاستدعاء (callable) مُباشرة.
  
 
== البنية العامة ==
 
== البنية العامة ==
سطر 11: سطر 11:
 
واصفٌ أو كائن قابل للاستدعاء (تُعامل الكائنات التي تجتمع فيها الصّفتان على أنّها واصفات، مثل الدّوال).
 
واصفٌ أو كائن قابل للاستدعاء (تُعامل الكائنات التي تجتمع فيها الصّفتان على أنّها واصفات، مثل الدّوال).
  
عندما يكون <code>func</code> واصفًا (مثل دالّة بايثون عاديّة، أو الدّالة <code>classmethod()‎</code>، أو الدّالة <code>staticmethod()‎</code>، أو نسخة أخرى من <code>partialmethod</code>)، فستُفوّض استدعاءات الخاصيّة <code>__get__‎</code> إلى الواصف المنشأ، وسيُعاد كائن <code>partial</code> كنتيجة.
+
عندما يكون <code>func</code> واصفًا (مثل دالّة بايثون عاديّة، أو الدّالة <code>[[Python/classmethod|classmethod()‎]]</code>، أو الدّالة <code>[[Python/staticmethod|staticmethod()]]‎</code>، أو نسخة أخرى من <code>partialmethod</code>)، فستُفوّض استدعاءات الخاصيّة <code>__get__‎</code> إلى الواصف المنشأ، وسيُعاد كائن <code>[[Python/functools/partial|partial]]</code> كنتيجة.
  
عندما يكون <code>func</code> كائنًا قابلا للاستدعاء غيرَ واصف، فسيُنشأ تابعٍ مُرتبط () ديناميكيًّا. الذي يتصرّف مثل دالّة بايثون عاديّة عند استخدامها كتابع، سيُمرّر المُعامل <code>self</code> كأول مُعامل مكانيّ، وذلك حتّى قبل أن تُمرّر المُعاملات يكون <code>args</code> ومُعاملات الكائنات المفتاحيّة يكون <code>keywords</code> إلى <code>partialmethod</code>.  
+
عندما يكون <code>func</code> كائنًا قابلا للاستدعاء غيرَ واصف، فسيُنشأ تابعٍ مُرتبط (bound method) ديناميكيًّا. الذي يتصرّف مثل دالّة بايثون عاديّة عند استخدامها كتابع، سيُمرّر المُعامل <code>self</code> كأول مُعامل مكانيّ، وذلك حتّى قبل أن تُمرّر المُعاملات <code>args</code> ومُعاملات الكائنات المفتاحيّة <code>keywords</code> إلى <code>partialmethod</code>.  
  
 
=== <code>args</code> ===
 
=== <code>args</code> ===
سطر 47: سطر 47:
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
* [[Python/functools/partial|functools.partial]].
 
* [[Python/classmethod|الدالة classmethod()‎ في بايثون]].
 
* [[Python/staticmethod|الدالة staticmethod()‎ في بايثون]].
 
* [[Python/property|الدالة property‎ في بايثون]].
 
 
* [[Python/defining-functions|تعريف الدوال في بايثون]].
 
* [[Python/defining-functions|تعريف الدوال في بايثون]].
 +
 +
* [[Python/functools/partial|<code>functools.partial</code>]]: إنشاء دوال جزئيّة.
 +
*  [[Python/classmethod|<code>classmethod()‎</code>]] : إنشاء تابع صنف.
 +
*  [[Python/staticmethod|<code>staticmethod()‎</code>]] : إنشاء تابع ساكن.
 +
* [[Python/property|الدالة <code>property</code>‎]] : تحويل تابع إلى خاصيّة.
  
 
== مصادر ==
 
== مصادر ==

مراجعة 13:06، 23 يونيو 2018

تعيد الدّالة functools.partialmethod()‎ واصفًا يتصرّف مثل كائنات partial، إلّا أنّه مُصمّم ليُستخدم كتعريف تابع (method definition) عوضًا عن أن يكون قابلا للاستدعاء (callable) مُباشرة.

البنية العامة

functools.partialmethod(func, *args, **keywords)

المعاملات

func

واصفٌ أو كائن قابل للاستدعاء (تُعامل الكائنات التي تجتمع فيها الصّفتان على أنّها واصفات، مثل الدّوال).

عندما يكون func واصفًا (مثل دالّة بايثون عاديّة، أو الدّالة classmethod()‎، أو الدّالة staticmethod()، أو نسخة أخرى من partialmethod)، فستُفوّض استدعاءات الخاصيّة ‎__get__‎ إلى الواصف المنشأ، وسيُعاد كائن partial كنتيجة.

عندما يكون func كائنًا قابلا للاستدعاء غيرَ واصف، فسيُنشأ تابعٍ مُرتبط (bound method) ديناميكيًّا. الذي يتصرّف مثل دالّة بايثون عاديّة عند استخدامها كتابع، سيُمرّر المُعامل self كأول مُعامل مكانيّ، وذلك حتّى قبل أن تُمرّر المُعاملات args ومُعاملات الكائنات المفتاحيّة keywords إلى partialmethod.

args

المُعاملات التي ستُمرّر.

keywords

المُعاملات المفتاحيّة التي ستُمرّر.

القيمة المعادة

واصف يُستعمل كتابع جزئيّ بمُعاملات ثابتة مُمرّرة مُسبقًا.

أمثلة

المثال التّالي يوضّح كيفيّة عمل هذه الدّالة:

>>> class Cell(object): # خليّة
...     def __init__(self):
...         self._alive = False
...     @property
...     def alive(self): # خاصيّة تُعيد ما إذا كانت الخليّة حيّة أو لا
...         return self._alive
...     def set_state(self, state): # تابع يُغيّر حالة الخليّة
...         self._alive = bool(state)
...     set_alive = partialmethod(set_state, True) # تابع جزئيّ يُرسل قيمة منطقيّة صحيحة إلى تابع تغيير الحالة
...     set_dead = partialmethod(set_state, False) # تابع جزئيّ لإماتة الخليّة
...
>>> c = Cell()
>>> c.alive
False
>>> c.set_alive()
>>> c.alive
True

انظر أيضًا

مصادر