Terry Reedy wrote:
In 3.0, the test returns true because function attributes only get wrapped when bound. In the meanwhile, " 'object' in repr(X.__lt__)" should do it for you.
This session should give you some hints how to archive your goal :) Have fun! >>> import types >>> class A(object): ... def __lt__(self): ... pass ... >>> isinstance(A.__lt__, types.MethodType) True >>> isinstance(A.__gt__, types.MethodType) False >>> type(A.__lt__) <type 'instancemethod'> >>> type(A.__gt__) <type 'method-wrapper'> >>> type(A.__str__) <type 'wrapper_descriptor'> >>> type(A.__new__) <type 'builtin_function_or_method'> >>> A.__lt__.im_func <function __lt__ at 0x7f03f9298500> >>> A.__lt__.im_func == A.__lt__.im_func True >>> A.__gt__.im_func Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'method-wrapper' object has no attribute 'im_func' -- http://mail.python.org/mailman/listinfo/python-list