Si je crée ma propre classe en Python, quelle fonction dois-je définir afin de permettre l'utilisation de l'opérateur 'in', par exemple
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
python
operator-overloading
operators
in-operator
astrofrog
la source
la source
is
etis not
. Comme unquery = tinydb.Query().field == value
, pour pouvoir aussi écrireQuery().field is not None
. Mais il semble que je me retrouve avec__eq__
et__ne__
pour le moment, ce qui conduit à l'impieQuery().field != None
. (sarc)Réponses:
MyClass.__contains__(self, item)
la source
Une réponse plus complète est:
Ici, vous obtiendrez True en demandant si 54 était en m:
Voir la documentation sur la surcharge
__contains__
.la source
Vous pourriez également vouloir jeter un coup d'œil à un framework de remplacement d'opérateur infixe que j'ai pu utiliser pour créer un langage spécifique au domaine:
http://code.activestate.com/recipes/384122/
la source