wake-up-neo.com

In-Operator von Python überschreiben?

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:
    ...
167
astrofrog
215

Eine vollständigere Antwort lautet:

class MyClass(object):

    def __init__(self):
        self.numbers = [1,2,3,4,54]

    def __contains__(self, key):
        return key in self.numbers

Hier würden Sie True erhalten, wenn Sie gefragt würden, ob 54 in m wäre:

>>> m = MyClass()
>>> 54 in m
True  

Siehe Dokumentation zum Überladen __contains__ .

167
pthulin

Vielleicht möchten Sie auch einen Blick auf ein Framework zum Überschreiben von Infix-Operatoren werfen, mit dem ich eine domänenspezifische Sprache erstellen konnte:

http://code.activestate.com/recipes/384122/

7
user250828