Wenn ich meine eigene Klasse in Python erstelle, welche Funktion sollte ich definieren, um die Verwendung des Operators 'in' zu ermöglichen, z
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
python
operator-overloading
operators
in-operator
Astrofrog
quelle
quelle
is
und überschreibtis not
. Wie einquery = tinydb.Query().field == value
, um auch schreiben zu könnenQuery().field is not None
. Aber es scheint, ich bin mit__eq__
und__ne__
vorerst verlassen, was zur Unpythonie führtQuery().field != None
. (sarc)Antworten:
MyClass.__contains__(self, item)
quelle
Eine vollständigere Antwort lautet:
Hier würden Sie wahr werden, wenn Sie fragen, ob 54 in m ist:
Siehe Dokumentation zur Überladung
__contains__
.quelle
Vielleicht möchten Sie auch einen Blick auf ein Infix-Operator-Override-Framework werfen, mit dem ich eine domänenspezifische Sprache erstellen konnte:
http://code.activestate.com/recipes/384122/
quelle