Если я создаю свой собственный класс в Python, какую функцию я должен определить, чтобы разрешить использование оператора «in», например.
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
Если я создаю свой собственный класс в Python, какую функцию я должен определить, чтобы разрешить использование оператора «in», например.
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
Более полный ответ:
class MyClass(object):
def __init__(self):
self.numbers = [1,2,3,4,54]
def __contains__(self, key):
return key in self.numbers
Здесь вы получите True, если спросите, было ли 54 в m:
>>> m = MyClass()
>>> 54 in m
True
См. документацию по перегрузке __contains__.
Вы также можете взглянуть на структуру переопределения инфиксных операторов, которую я смог использовать для создания предметно-ориентированного языка:
http://code.activestate.com/recipes/384122/
isиis not. Какquery = tinydb.Query().field == value, чтобы также иметь возможность писатьQuery().field is not None. Но, похоже, пока что у меня остались__eq__и__ne__, что приводит к непифоническомуQuery().field != None. (сарк) - person Tomasz Gandor   schedule 13.06.2017