New issue 2096: isinstance(obj, cls) should not call __instancecheck__ if 
type(obj)==cls
https://bitbucket.org/pypy/pypy/issues/2096/isinstance-obj-cls-should-not-call

kmod:

CPython fast-paths this case to always return true.  Seems like probably user 
error if instancecheck returns false for instances of that type :P but it's 
still a difference:

```
class M(type):
    def __instancecheck__(self, obj):
        print "instancecheck", type(obj)
        return False

class C(object):
    __metaclass__ = M

class D(C):
    pass

d = D()
print isinstance(d, C) # should call instancecheck
print isinstance(d, D) # should not call instancecheck
```

In the second isinstance(), CPython (2.7.6) doesn't call instancecheck, but 
PyPy (2.6.0) does.


_______________________________________________
pypy-issue mailing list
pypy-issue@python.org
https://mail.python.org/mailman/listinfo/pypy-issue

Reply via email to