-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 11/08/2012 02:51 PM, Tres Seaver wrote: > On 11/08/2012 12:59 PM, Guido van Rossum wrote: >> In Python, you can write > >> if C.__eq__ == object.__eq__: print('class C does not override >> __eq__') > >> Does that help? > > That works in Python3, but not in Python2 -- methodwrappers don't > compare equal the same way slotwrappers do :(. I still need to > straddle (back to Python 2.6.
I think I'm going to need two separate checkers: - - In Py3k, use your check above for both '__eq__' and '__lt__', e.g: def check_comparable(key); klass = type(key) if klass.__eq__ == object.__eq__ or klass.__lt__ == object.__lt__: raise TypeError('Incomparable') - - In Python2, I think I can just check that the instance (not its class) has either ('__lt__' and '__eq__') *or* '__cmp__', e.g.: def check_comparable(key); if not ((getattr(key, '__eq__', None) is not None and getattr(key, '__lt__', None) is not None) or getattr(key, '__cmp__', None) is not None): raise TypeError('Incomparable') Tres. - -- =================================================================== Tres Seaver +1 540-429-0999 tsea...@palladion.com Palladion Software "Excellence by Design" http://palladion.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://www.enigmail.net/ iEYEARECAAYFAlCcFrcACgkQ+gerLs4ltQ6JDgCeJpDmo70H9Xgz3preNHVvaTl5 dYkAoNS+fpSXwZiaD2J2ONyQZ2mPIcFC =OiMY -----END PGP SIGNATURE----- _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com