]> granicus.if.org Git - python/commitdiff
Future proof total_ordering against changes in methods defined on object.
authorRaymond Hettinger <python@rcn.com>
Tue, 14 Sep 2010 22:55:13 +0000 (22:55 +0000)
committerRaymond Hettinger <python@rcn.com>
Tue, 14 Sep 2010 22:55:13 +0000 (22:55 +0000)
Lib/functools.py

index b39e77eb6167a51bbbfd9c7a7050a1889a4d54b0..314c0dd906de31c506749ddf562b638d6f564d19 100644 (file)
@@ -82,7 +82,7 @@ def total_ordering(cls):
                    ('__lt__', lambda self, other: not self >= other)]
     }
     # Find comparisons not inherited from object.
-    roots = [op for op in convert if getattr(cls, op) is not getattr(object, op)]
+    roots = [op for op in convert if getattr(cls, op, None) is not getattr(object, op, None)]
     if not roots:
         raise ValueError('must define at least one ordering operation: < > <= >=')
     root = max(roots)       # prefer __lt__ to __le__ to __gt__ to __ge__