On 1/25/2011 10:32 AM, Alan Franzoni wrote:

You're right, I forgot about subclass check. But that's really a
placebo, because it statically checks the object's *class* for such
method,

That is exactly the proper check. Instance *methods* are defined on the class.

> not the actual instance:

Function attributes of instances are not methods. This is especially true of special methods.

from collections import Sized

class MyObj(object):
     pass

mo = MyObj()
mo.__len__ = lambda: 1


print isinstance(mo, Sized)
False

This is correct!

print(len(mo))
TypeError: object of type 'MyObj' has no len()

--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to