Ich verwende Python 2.7.3 unter Windows. Ich habe versucht, die magische Methode __instancecheck__
als eine Klassenmethode zu überschreiben. Aber ich kann es nicht funktionieren lassen.Klassenmethode __instancecheck__ funktioniert nicht
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
Ich nehme an, die erste Druckanweisung würde True erhalten. Aber es scheint, die magische Methode __instancecheck__
wird nicht aufgerufen. Und ich weiß nicht, warum die zweite Druckanweisung funktionieren kann, da die isinstance
eine Klasse/einen Typ als zweiten Parameter annehmen sollte.
Weiß jemand, was das Problem ist? Vielen Dank.
Vielen Dank. @ thg435 hat mir ein gutes Beispiel gegeben und jetzt weiß ich, wie ich das erreichen kann. – adarliu