Перегрузка Python 'in' для возврата не-bool

я пытаюсь перегрузитьin оператор для класса, чтобы возвратить не-bool объект, но он все равно приведёт. Вот мой вариант использования:

class Dataset(object):
  def __init__(self):
    self._filters = []

  def filter(self, f):
    self._filters.append(f)
    return self

class EqualFilter(object):
  def __init__(self, field, val):
    ...

class SubsetFilter(object):
  def __init__(self, field, vals):
    ...

class FilterBuilder(object):
  def __init__(self, field):
    self._field = field

  def __eq__(self, val):
    return EqualFilter(self._field, val)

  def __contains__(self, vals):
    return SubsetFilter(self._field, vals)


veggie = FilterBuilder('veggie')
fruit = FilterBuilder('fruit')
ds = Dataset().filter(veggie == 'carrot').filter(fruit in ['apple', 'orange'])

В конце кода,ds содержитEqualFilter заveggie == 'carrot', а такжеTrue заfruit in ['apple', 'orange'], Есть ли способ для DS в конечном итоге с?SubsetFilter

Ответы на вопрос(3)

Ваш ответ на вопрос