Перегрузка 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