Si je crée ma propre classe en Python, quelle fonction dois-je définir pour permettre l'utilisation de l'opérateur 'in', par ex.Remplacer l'opérateur 'in' de Python?
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
Si je crée ma propre classe en Python, quelle fonction dois-je définir pour permettre l'utilisation de l'opérateur 'in', par ex.Remplacer l'opérateur 'in' de Python?
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
une réponse plus complète est:
class MyClass(object):
def __init__(self):
self.numbers = [1,2,3,4,54]
def __contains__(self, key):
return key in self.numbers
Ici, vous obtenez vrai lorsque vous demandez si 54 était en m:
>>> m = MyClass()
>>> 54 in m
True
@pthulin, le vôtre peut être "plus complet" en termes de code, mais les liens d'Ignacio à la documentation, ce qui est toujours un gros plus pour certains. –
@PEter. YEah, mais certains d'entre nous préfèrent une belle représentation visuelle de la réponse. Ignacio a fait peu de bénéfice pour la question autre que nous diriger ici d'abord au lieu de google, non merci. –
Zoran, je suis d'accord, et j'ai même upvoted cette réponse et pas l'autre. Je signale simplement qu'une bonne réponse devrait toujours être liée aux documents, si disponibles. –
Vous pouvez également jeter un oeil à un cadre opérateur infixe override j'ai pu utiliser pour créer un langage spécifique à un domaine:
Astuce soignée. Je ne peux pas penser à un usecase pour cela, mais très soigné. –
je fait chercher comment remplacer le 'is' et "n'est pas" les opérateurs. Comme un 'query = tinydb.Query(). Field == value', pour pouvoir aussi écrire' Query(). Field n'est pas None'. Mais il semble que je sois à gauche avec '__eq__' et' __ne__' pour l'instant, ce qui conduit à l'non-pythonique 'Query(). Field! = None'. (sarc) –