---------------------------------------- > To: tutor@python.org > From: em...@fenx.com > Date: Mon, 12 Oct 2015 09:25:00 -0700 > Subject: Re: [Tutor] 0> "0" --> is there a "from __future__ import to make > this raise a TypeError? > > On 10/12/2015 9:12 AM, Albert-Jan Roskam wrote: >> Hi, >> >> >> In Python 2 one can do silly apple-pear comparisons such as 0> "0".*) >> "CPython implementation detail: Objects of different types except numbers >> are ordered by their type names; objects of the same types that don’t >> support proper comparison are ordered by their address.". In Python3 this >> has been fixed (it raises a TypeError). Is there a way to emulate this >> behavior in Python 2? >> >> >> >> *)http://stackoverflow.com/questions/3270680/how-does-python-compare-string-and-int >> > > See if implementing __cmp__ gets you what you're looking for. > > See http://www.rafekettler.com/magicmethods.html#comparisons for more info. > > Emile
Hi Emille, Maybe like so? Is it possible to call __cmp__ wiithout the need to make an instance? I would find it nicer if I could do Cmp(42) == "42". Also, the two if/elifs don't feel quite right/generic. # -*- coding: utf-8 -*-. class Cmp(object): """Compare objects the Python 3 way: no apple-pear comparisons allowed! >>> x = Cmp() # doctest: +IGNORE_EXCEPTION_DETAIL >>> x(42) == "42" Traceback (most recent call last): ... TypeError >>> x(42) == 42 True >>> x(42) == 42.1 False >>> x("42")> 0 Traceback (most recent call last): ... TypeError """ def __call__(self, x): self.x = x return self def __cmp__(self, y): #print "__cmp__" self.y = y if isinstance(self.x, (str, unicode)) and hasattr(self.y, "__int__"): raise TypeError elif isinstance(self.y, (str, unicode)) and hasattr(self.x, "__int__"): raise TypeError return -1 if self.x < self.y else 0 if self.x == self.y else 1 if __name__ == "__main__": import doctest doctest.testmod() _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor