metoda klasy __instancecheck__ nie działa
Używam Pythona 2.7.3 w systemie Windows. Próbowałem zastąpić__instancecheck__
metoda magiczna jako metoda klasowa. Ale nie mogę tego sprawić.
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
Zakładam, że pierwsza instrukcja drukowania otrzyma True. Ale wydaje się, że to magiczna metoda__instancecheck__
nie jest wywoływany. I nie wiem, dlaczego druga instrukcja drukowania może działać odisinstance
powinien przyjąć klasę / typ jako drugi parametr.
Czy ktoś wie, na czym polega problem? Dzięki.