Sobrecarga Python 'en' para devolver no bool

Estoy tratando de sobrecargar elin operador de una clase para devolver un objeto no bool, pero parece que se lanza de todos modos. Aquí está mi caso de uso:

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'])

Al final del código,ds contiene unaEqualFilter paraveggie == 'carrot'yTrue parafruit in ['apple', 'orange']. ¿Hay alguna manera para que ds termine con unaSubsetFilter?

Respuestas a la pregunta(3)

Su respuesta a la pregunta