Bunlar, “zengin karşılaştırma” yöntemleri olarak adlandırılır ve aşağıdakiler yerine karşılaştırma işleçleri için çağrılır __cmp__(). Aşağıdaki gibi operatör semboller ve yöntem adları arasındaki yazışmalar geçerli: x<yçağrılar
x.__lt__(y), x<=yçağrılar x.__le__(y),
x==yçağrılar x.__eq__(y), x!=yve x<>y
çağrı x.__ne__(y), x>yçağrı
x.__gt__(y)ve x>=yçağrılar
x.__ge__(y).
Zengin bir karşılaştırma yöntemi, NotImplementedbelirli bir çift argüman için işlemi uygulamazsa singletonu döndürebilir . Sözleşme ile, Falseve Truebaşarılı bir karşılaştırma için iade edilir. Bununla birlikte, bu yöntemler herhangi bir değer döndürebilir, bu nedenle karşılaştırma operatörü bir Boolean bağlamında kullanılırsa (örneğin, bir if ifadesi durumunda), Python bool()sonucun doğru veya yanlış olup olmadığını belirlemek için değeri çağırır .
Karşılaştırma işleçleri arasında herhangi bir zımni ilişki yoktur. Gerçek,
bunun yanlış olduğu x==yanlamına gelmez x!=y. Buna göre, tanımlarken
__eq__(), __ne__()operatörlerin beklendiği gibi davranması için de tanımlanmalıdır . __hash__()Özel karşılaştırma işlemlerini destekleyen ve sözlük anahtarları olarak kullanılabilen yıkanabilir nesneler oluşturma hakkında bazı önemli notlar için paragrafa bakın .
Bu yöntemlerin takas argümanı sürümleri yoktur (sol argüman işlemi desteklemiyor, ancak sağ argüman destekliyorsa kullanılır); daha doğrusu, __lt__()ve __gt__()
birbirlerinin yansımasıdır, __le__()
ve __ge__()birbirlerinin yansımasıdır ve __eq__()ve __ne__()
kendi yansımasıdır.
Zengin karşılaştırma yöntemlerine yönelik argümanlar hiçbir zaman zorlanmamaktadır.
Karşılaştırmalar keyfi olarak zincirlenebilir, örn. Y'nin sadece bir kez değerlendirilmesi dışında x < y <= zeşdeğerdir x < y and y <= z(ancak her iki durumda da x <y yanlış olduğu tespit edildiğinde z hiç değerlendirilmez).
Resmi olarak, eğer a, b, c, ..., y, z ifadeler ve op1, op2, ..., opN karşılaştırma operatörleriyse, bir op1 b op2 c ... y opN z bir op1 b'ye eşdeğerse ve b op2 c ve ... y opN z, ancak her ifadenin en fazla bir kez değerlendirilmesi.