اختبر العملية المطلوبة نفسها. [1] [2]
الخلاصة السريعة
نجاح int() لا يكفي لقبول operator.index()؛ في المثال يحتاج الأخير إلى __index__. [1] [2]
- الفئة Num تعرف __int__ فقط؛ int(Num()) يعطي 4. [1] [2]
- index(Num()) يرفع TypeError، ولا يستعمل __int__ بديلًا هنا. [1] [2]
- الفئة Exact تعرف __index__؛ index(Exact()) يعطي 9. [1] [2]
- افصل التحويل العددي عن بروتوكول العدد الصحيح. [1] [2]
- اختبرنا 3.12.14 وفئتين عاديتين؛ لا نعمم على وراثة int أو عوائد مخالفة. [1] [2]
المثال
from operator import index
class Num:
def __int__(self):
return 4
class Exact:
def __index__(self):
return 9
print(int(Num()))
try:
print(index(Num()))
except TypeError:
print('TypeError')
print(index(Exact()))المخرجات: 4، ثم TypeError، ثم 9. [1] [2]
ما الذي نجح؟
نجح طلب التحويل الأول؛ لا يثبت وجود بروتوكول آخر في الفئة. [1] [2]
الفئة الثانية
في الفئة الثانية تعيد الطريقة عددًا صحيحًا، فينجح index بالناتج المعلن. [1] [2]

المراجعة
المقارنة تخص هاتين الفئتين؛ افحص العقد قبل استبدال إحدى العمليتين بالأخرى. [1] [2]
المراجع
- Python: operator.index
- Python: بروتوكولا التحويل
- موضوع تك: لغة بايثون — مفردات
- موضوع تك: تطبيقات بايثون — مفردات
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
