在Python 2中调用的元类的__isinstance__但不是3

时间:2018-04-04 16:00:49

标签: python python-2.7 python-3.5 metaclass

请使用以下代码:

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 23文档中是相同的,我无法找到导致这种行为差异的原因。谁知道为什么?

0 个答案:

没有答案