Używam Pythona 2.7.3 w systemie Windows. Próbowałem zastąpić magiczną metodę __instancecheck__
jako metodę klasy. Ale nie mogę sprawić, żeby to działało.metoda klasy __instancecheck__ nie działa
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 pierwsze polecenie print zostanie ustawione na True. Ale wygląda na to, że magiczna metoda nie jest wywoływana. I nie wiem, dlaczego druga instrukcja print może działać, ponieważ klasa isinstance
powinna przyjąć klasę/typ jako drugi parametr.
Czy ktoś wie, na czym polega problem? Dzięki.
Dziękuję. @ thg435 dał mi dobry przykład i teraz wiem, jak to osiągnąć. – adarliu