singledispatchmethod تختار بحسب أول وسيط بعد self أو cls؛ في طريقتنا هو value. [1]
الخلاصة السريعة
لا؛ نوع value يحدد الفرع هنا. [1]
- singledispatchmethod تختار بحسب أول وسيط بعد self أو cls؛ في طريقتنا هو value. [1]
- على CPython 3.12.14، Formatter.route تعيد النص base افتراضيًا؛ نسجل النوع int ليعيد النص int. [1]
- own.route(4) تعيد int، وown.route("4") تعيد base؛ self هي own نفسها في الاستدعاءين. [1]
- تحكم بدالة plain من singledispatch: plain(own,4) تعيد base؛ العدد الثاني لا يختار فرع int. [1]
- plain(4,own) تعيد int لأن العدد أولًا. نقارن دالة بطريقتنا المرتبطة بمثيل؛ لا نختبر classmethod أو وراثة مخصصة. [1]
وسيط الاختيار
singledispatchmethod تختار بحسب أول وسيط بعد self أو cls؛ في طريقتنا هو value. [1]
الافتراضي والتسجيل
على CPython 3.12.14، Formatter.route تعيد النص base افتراضيًا؛ نسجل النوع int ليعيد النص int. [1]
الطريقة المرتبطة
own.route(4) تعيد int، وown.route("4") تعيد base؛ self هي own نفسها في الاستدعاءين. [1]
from functools import singledispatchmethod,singledispatch class Formatter: @singledispatchmethod def route(self,value):return "base" @route.register(int) def route_int(self,value):return "int" own=Formatter() print(own.route(4),own.route("4")) [1]

الدالة والتحكم
تحكم بدالة plain من singledispatch: plain(own,4) تعيد base؛ العدد الثاني لا يختار فرع int. [1]
@singledispatch def plain(first,second):return "base" @plain.register(int) def plain_int(first,second):return "int" print(plain(own,4),plain(4,own)) [1]
plain(4,own) تعيد int لأن العدد أولًا. نقارن دالة بطريقتنا المرتبطة بمثيل؛ لا نختبر classmethod أو وراثة مخصصة. [1]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
