Существует ли набор, для которого «in» всегда возвращает true?

#python #python-3.x #set

#python #python-3.x #набор

Вопрос:

Существует ли в Python набор, который эффективно функционирует как набор, содержащий все возможные наборы?

Комментарии:

1. Я сомневаюсь в этом, это даже не имеет математического смысла. Для чего бы вы его использовали?

2. Почему вы хотите сделать это вместо того, чтобы просто вернуться True ?

3. вместо if element in set вы можете сделать if True

4. Если это if , и вы всегда хотите, чтобы оно выполнялось, оно даже не должно быть в if в первую очередь. Вероятно, это проблема XY . Чего вы на самом деле хотите достичь?

5. Для чего-то вроде тестового примера вы могли бы создать свой собственный макет, set который делает это, или что угодно еще, что вы хотите.

Ответ №1:

Вы могли бы создать подкласс set :

 class FullSet(set):
    def __contains__(self, item):
        return True

fullset = FullSet()
print({1, 2, 3} in fullset)
  

вывод:

 True
  

Комментарии:

1. Чтобы сделать его полным, вероятно, следует также переопределить __and__ , __or__ union difference , intersection , и т.д… На самом деле почти все. Но опять же, вероятно, нет реальной пользы для полной реализации этого.

2. @zvone Да, но все это зависит от варианта использования. В вопросе упоминается только in оператор, поэтому я решил рассмотреть именно это.