instancecheck必须在元类中定义:
class Enumeration(type): def __instancecheck__(self, other): print 'hi' return Trueclass EnumInt(int): __metaclass__ = Enumerationprint isinstance('foo', EnumInt) # prints True这是为什么?出于同样的原因,您的第二个示例起作用。当python评估
isinstance(A,B)它
B为一个对象时,查找其类并调用
__instancecheck__该类:
isinstance(A, B): C = class-of(B) return C.__instancecheck__(A)
但是,当
B类本身是类时,则其类
C应该是类的类,换句话说,是元类!



