我在Windows上使用python 2.7.3.我试图将__instancecheck__魔术方法覆盖为类方法.但我不能让它发挥作用.
class Enumeration(int):
@classmethod
def __instancecheck__(cls, inst):
if type(inst) == cls:
return True
if isinstance(inst, int) and inst in range(0,10):
return True
return False
print isinstance(1, Enumeration) # prints False
print isinstance(1, Enumeration()) # prints True
Run Code Online (Sandbox Code Playgroud)
我假设第一个print语句将为True.但似乎__instancecheck__没有调用神奇的方法.我不知道为什么第二个print语句可以工作,因为isinstance应该将class/type作为第二个参数.
有谁知道问题是什么?谢谢.
python ×1