Message 69005 - Python tracker
I think the best is to ignore __instancecheck__ when "cls.__instancecheck__" is returned as an unbound method. In this case, we try "type(cls).__instancecheck__" instead. Here is a patch along this idea. I had to disable a test named "Evil", because in this case isinstance() simply falls back to the original algorithm. I don't know if this is applicable to 3.0: unbound methods don't exist any more.