assertIs تفحص هل الطرفان الكائن نفسه؛ نجاح المساواة المخصصة ليس شرط مرورها. [1] [2]
الخلاصة السريعة
لا؛ لم تستدعها في مثالنا. [1] [2]
- assertIs تفحص هل الطرفان الكائن نفسه؛ نجاح المساواة المخصصة ليس شرط مرورها. [1] [2]
- على CPython 3.12.14، first وsecond كائنان منفصلان من Box؛ __eq__ تسجل "eq" في calls وتعيد True. [1] [2]
- assertIs(first,second) تفشل بـAssertionError؛ calls تبقى []. [1] [2]
- تحكم: assertIs(first,first) تمر؛ calls ما زالت []. [1] [2]
- بعد ذلك first==second تعطي True؛ calls تصبح ["eq"]. النتيجة تميز استدعاء المساواة عن اختبار الهوية في هذه الفئة المؤلفة. [1] [2]
شرط الهوية
assertIs تفحص هل الطرفان الكائن نفسه؛ نجاح المساواة المخصصة ليس شرط مرورها. [1] [2]
مساواة مخصصة
على CPython 3.12.14، first وsecond كائنان منفصلان من Box؛ __eq__ تسجل "eq" في calls وتعيد True. [1] [2]
كائنان منفصلان
assertIs(first,second) تفشل بـAssertionError؛ calls تبقى []. [1] [2]
from unittest import TestCase tc=TestCase();calls=[] class Box: def __eq__(self,other):calls.append("eq");return True first=Box();second=Box() try:tc.assertIs(first,second) except AssertionError:print("AssertionError",calls) [1] [2]

الكائن نفسه والمقارنة
تحكم: assertIs(first,first) تمر؛ calls ما زالت []. [1] [2]
tc.assertIs(first,first) print("pass",calls) print(first==second,calls) [1] [2]
بعد ذلك first==second تعطي True؛ calls تصبح ["eq"]. النتيجة تميز استدعاء المساواة عن اختبار الهوية في هذه الفئة المؤلفة. [1] [2]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
