实现 All / Universal 集

Implementing the All / Universal set

为了简化我的代码,我想实现一个包含 所有内容 的集合,即 UniversalSet。我认为解决这个问题的最简单方法是为任何查询设置 returns True 的自定义集。在我的特殊情况下,我最感兴趣的是 __intersect__ 集合,因此满足以下条件:

u_set = UniversalSet()
u_set & {1, 2, 3} == {1, 2, 3}  # (1)
{1, 2, 3} & u_set == {1, 2, 3}  # (2)

我按以下方式对 set 进行了子类化:

class UniversalSet(set):
    def __and__(self, other):
        return other

这适用于 (1),但 (2) 仍然失败。有没有类似的简单方法让 (2) 工作?

您还需要定义 and 运算符 (__rand__) 的 reversed 版本,以便当它是第二个参数以及首先.

class UniversalSet(set):
    def __and__(self, other):
        return other

    def __rand__(self, other):
        return other