Hi,
I've been staring at this problem, in various forms, all day. Am I missing
something obvious, or is there some strange hardwiring of isinstance? This is
with Python 3.2.
class A(metaclass=ABCMeta):
@classmethod
def __instancecheck__(cls, instance): return False
# no override
assert isinstance(A(), A)
assert A.__class__.__instancecheck__(A, A())
class B(type):
def foo(self): return 42
class C(metaclass=B):
@classmethod
def foo(cls): return 7
# override
assert C().__class__.foo() == 7
It seems to me that the above two cases are inconsistent. ABCMeta declares
__instancecheck__ just like B declares foo. Yet C can override foo, but A is
unable to override the instance check.
Please help!
Thanks,
Andrew
--
http://mail.python.org/mailman/listinfo/python-list