Переопределить Python 'в' операторе?

Если я создаю свой собственный класс в Python, что функция должна я определять, чтобы позволить использование 'в' операторе, например.

class MyClass(object):
    ...

m = MyClass()

if 54 in m:
    ...
177
задан smci 26 October 2016 в 09:16
поделиться

3 ответа

227
ответ дан 23 November 2019 в 20:17
поделиться

Более полный ответ:

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 = MyClass()
>>> 54 in m
True  

См. документацию по перегрузке __контейнерам__.

177
ответ дан 23 November 2019 в 20:17
поделиться

Вы также можете взглянуть на структуру переопределения инфиксного оператора, которую я смог использовать для создания предметно-ориентированного языка:

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

7
ответ дан 23 November 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: