Я использую python 2.7.3 для Windows. Я попытался переопределить магический метод __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
должен взять класс/тип как второй параметр.
Кто-нибудь знает, в чем проблема? Спасибо.