تقنية

partialmethod في بايثون: هل العدد المحفوظ يحل محل self؟

own.plus(3) تعطي 10.
المثيل أولًا.

partialmethod تربط المثيل قبل الوسائط المحفوظة؛ العدد 2 يملأ x في مثالنا. [1]

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

لا؛ self هي المثيل، ثم يأتي العدد. [1]

  • partialmethod تربط المثيل قبل الوسائط المحفوظة؛ العدد 2 يملأ x في مثالنا. [1]
  • على CPython 3.12.14، كائن Adder يحمل bias=5؛ add(self,x,y) تجمعها مع x وy. [1]
  • plus=partialmethod(add,2)؛ own.plus(3) تعطي 10: المثيل ثم 2 ثم 3. [1]
  • bad=partial(add,2) لا تربط المثيل؛ own.bad(3) تمرر 2 إلى self و3 إلى x، وترفع TypeError لنقص y. [1]
  • تحكم: partial(own.add,2)(3) تعطي 10؛ own.add مرتبطة سلفًا. المثال لطريقة عادية وأعداد صحيحة، دون واصفات مخصصة. [1]

المثيل أولًا

partialmethod تربط المثيل قبل الوسائط المحفوظة؛ العدد 2 يملأ x في مثالنا. [1]

جمع المثال

على CPython 3.12.14، كائن Adder يحمل bias=5؛ add(self,x,y) تجمعها مع x وy. [1]

الطريقة الجزئية

plus=partialmethod(add,2)؛ own.plus(3) تعطي 10: المثيل ثم 2 ثم 3. [1]

from functools import partialmethod,partial class Adder: def __init__(self):self.bias=5 def add(self,x,y):return self.bias+x+y plus=partialmethod(add,2) bad=partial(add,2) own=Adder() print(own.plus(3)) [1]

own.bad(3) ترفع TypeError.
المثيل لا يضاف.

المقارنة والتحكم

bad=partial(add,2) لا تربط المثيل؛ own.bad(3) تمرر 2 إلى self و3 إلى x، وترفع TypeError لنقص y. [1]

try: own.bad(3) except TypeError: print("TypeError") print(partial(own.add,2)(3)) [1]

تحكم: partial(own.add,2)(3) تعطي 10؛ own.add مرتبطة سلفًا. المثال لطريقة عادية وأعداد صحيحة، دون واصفات مخصصة. [1]

المراجع

  1. Python partialmethod/partial

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

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