请使用以下代码:
class MyMeta(type):
def __instancecheck__(cls, instance):
print('Checking instance')
return True
class MyClass(object):
__metaclass__ = MyMeta
print(isinstance(1, MyClass))
在Python 2.7中,输出是
checking instance
True
在Python 3.5中,输出为
False
这意味着__instancecheck__
MyMeta
正在Python 2中使用,但在Python 3中不会出于任何原因。 __isinstance__
上的部分在Python 2和3文档中是相同的,我无法找到导致这种行为差异的原因。谁知道为什么?