我在Windows上使用python 2.7.3。我試圖覆蓋__instancecheck__
作爲類方法的魔術方法。但我無法讓它工作。類方法__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
應該將類/類型作爲第二個參數。
有誰知道問題是什麼?謝謝。
謝謝。 @ thg435給了我一個很好的例子,現在我知道如何做到這一點。 – adarliu