تقنية

partialmethod مع staticmethod: هل تُمرر self تلقائيًا؟

partialmethod; pair(x,y) returns (x,y); class S: base=staticmethod(pair); take=partialmethod(base,4); own=S(); own.take(9):(4,9); S.take(9):(4,9)
طريقة ساكنة.

partialmethod تفوض الربط للواصف؛ staticmethod لا تضيف self في مثالنا. [1] [2] [3]

الخلاصة السريعة

لا مع staticmethod هنا. [1] [2] [3]

  • partialmethod تفوض الربط للواصف؛ staticmethod لا تضيف self في مثالنا. [1] [2] [3]
  • على CPython 3.12.14، pair(x,y) تعيد الزوج؛ في S نضع base=staticmethod(pair) وtake=partialmethod(base,4). [1] [2] [3]
  • own=S()؛ own.take(9) وS.take(9) تعيدان (4,9)، دون تمرير مثيل أو صنف إلى pair. [1] [2] [3]
  • partialmethod.__get__ تستدعي __get__ للواصف الأصلي ثم تجهز partial بالوسائط المحفوظة هنا. [1] [2] [3]
  • تحكم مستقل: C.pair(self,x,y) تعيد self والعددين؛ control=C()؛ take=partialmethod(pair,4) تجعل control.take(9) تعيد control نفسه ثم 4 و9. لا نختبر واصفات مخصصة أو classmethod أو تجاوز الكلمات المفتاحية. [1] [2] [3]

الواصف

partialmethod تفوض الربط للواصف؛ staticmethod لا تضيف self في مثالنا. [1] [2] [3]

طريقة ساكنة

على CPython 3.12.14، pair(x,y) تعيد الزوج؛ في S نضع base=staticmethod(pair) وtake=partialmethod(base,4). [1] [2] [3]

المثيل والصنف

own=S()؛ own.take(9) وS.take(9) تعيدان (4,9)، دون تمرير مثيل أو صنف إلى pair. [1] [2] [3]

from functools import partialmethod def pair(x,y):return x,y class S: base=staticmethod(pair) take=partialmethod(base,4) own=S() print(own.take(9),S.take(9)) [1] [2] [3]

partialmethod; class C: pair(self,x,y) returns (self,x,y); take=partialmethod(pair,4); control=C(); receiver,x,y=control.take(9); (control,4,9); receiver is control:True
طريقة عادية.

تفويض وتحكم

partialmethod.__get__ تستدعي __get__ للواصف الأصلي ثم تجهز partial بالوسائط المحفوظة هنا. [1] [2] [3]

class C: def pair(self,x,y):return self,x,y take=partialmethod(pair,4) control=C();receiver,x,y=control.take(9) print(receiver is control,x,y) [1] [2] [3]

تحكم مستقل: C.pair(self,x,y) تعيد self والعددين؛ control=C()؛ take=partialmethod(pair,4) تجعل control.take(9) تعيد control نفسه ثم 4 و9. لا نختبر واصفات مخصصة أو classmethod أو تجاوز الكلمات المفتاحية. [1] [2] [3]

المراجع

  1. Python partialmethod
  2. CPython functools
  3. Python staticmethod

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.