total_ordering تستكمل مقارنات الترتيب؛ لا تنشئ __eq__ في مثالنا. [1] [2]
الخلاصة السريعة
لا؛ نكتب مقارنة المساواة للقيم. [1] [2]
- total_ordering تستكمل مقارنات الترتيب؛ لا تنشئ __eq__ في مثالنا. [1] [2]
- على CPython 3.12.14، Item تعرف __lt__ فقط للمقارنة؛ كائنان مختلفان منها يحملان 4. [1] [2]
- Item.__eq__ is object.__eq__ تعطي True؛ left==right تعطي False رغم تساوي القيم المخزنة. [1] [2]
- left<right وleft<=right تعطيان False؛ الاشتقاق من __lt__ يستعمل المساواة أيضًا في <=. [1] [2]
- تحكم EqualItem بالقيمة 4 و__eq__ للقيم: المساواة True، والأصغر False، والأصغر أو يساوي True. [1] [2]
ترتيب ومساواة
total_ordering تستكمل مقارنات الترتيب؛ لا تنشئ __eq__ في مثالنا. [1] [2]
فئة المثال
على CPython 3.12.14، Item تعرف __lt__ فقط للمقارنة؛ كائنان مختلفان منها يحملان 4. [1] [2]
المساواة الموروثة
Item.__eq__ is object.__eq__ تعطي True؛ left==right تعطي False رغم تساوي القيم المخزنة. [1] [2]
from functools import total_ordering @total_ordering class Item: def __init__(self,n):self.n=n def __lt__(self,other):return self.n<other.n left,right=Item(4),Item(4) print(Item.__eq__ is object.__eq__) print(left==right,left<right,left<=right) [1] [2]

الاشتقاق والتحكم
left<right وleft<=right تعطيان False؛ الاشتقاق من __lt__ يستعمل المساواة أيضًا في <=. [1] [2]
@total_ordering class EqualItem: def __init__(self,n):self.n=n def __lt__(self,other):return self.n<other.n def __eq__(self,other):return self.n==other.n a,b=EqualItem(4),EqualItem(4) print(a==b,a<b,a<=b) [1] [2]
تحكم EqualItem بالقيمة 4 و__eq__ للقيم: المساواة True، والأصغر False، والأصغر أو يساوي True. [1] [2]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
