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
?