【发布时间】:2012-10-30 09:06:45
【问题描述】:
我在 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
我假设第一个打印语句会得到 True。但似乎没有调用魔术方法__instancecheck__。而且我不知道为什么第二个打印语句可以工作,因为isinstance 应该将类/类型作为第二个参数。
有谁知道问题出在哪里?谢谢。
【问题讨论】:
标签: python