-----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 tseaver@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-----