PyWart: Language missing maximum constant of numeric types!

Steven D'Aprano steve+comp.lang.python at pearwood.info
Fri Feb 24 10:31:28 EST 2012


On 2012年2月24日 10:21:45 -0500, Mel Wilson wrote:
> Rick Johnson wrote:
>>> I get sick and tired of doing this!!!
>>>> if maxlength == UNLIMITED:
>> allow_passage()
>> elif len(string) > maxlength:
>> deny_passage()
>>>> What Python needs is some constant that can be compared to ANY numeric
>> type and that constant will ALWAYS be larger!
>> Easily fixed:
>>>> class Greatest (object):
> def __cmp__ (self, other):
> if isinstance (other, Greatest):
> return 0
> return 1
>> def __hash__ (self):
> return id (Greatest)

__cmp__ no longer exists in Python 3, so this solution could only work in 
Python 2.
Here's a version using rich comparisons:
class Greatest:
 __eq__ = __le__ = lambda self, other: isinstance(other, type(self))
 __ne__ = __gt__ = lambda self, othr: not isinstance(othr, type(self))
 __lt__ = lambda self, other: False
 __ge__ = lambda self, other: True
 __hash__ = lambda self: 42
-- 
Steven


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /