没有看到具体的实现细节set Class
但我认为这个问题的答案就在某个地方。 Python 赋值基本上评估右值并使用标识符作为引用对象来指向类对象。集合也是如此,即它们是抽象数据结构或引用对象的“集合”。集合不允许重复,当我创建一个集合时,如下所示:
s1 = {False, 1.0, 1, "a"} > {False, 1.0, "a"}
Float 类胜过 int 类,显然它们评估的是相同的东西。但是为什么float显示而init不显示呢?我似乎无法找到合适的答案或在源代码中看到它。
顺便说一句,我想提一下,我注意到,如果 True 和 False 都使用 .union() 操作出现,则 True 和 False 将以某种方式分别代替 1 和 0 。因此,浮点型胜过整数型,而整数型胜过布尔型。但,
>>> s1 = {False, 'a', 1}
>>> s2 = {True, 'a', 0}
>>> s1 | s2
{False, 1, 'a'}
假的还剩..I don't知道这是否是 REPL 问题,但再次测试后我得到{0, 1, 'a'}
每次我都不知道发生了什么。
>>> s1 = {True, 'a', 1}
>>> s1
{1, 'a'}
>>> s2 = {False, 'a', 0}
>>> s2
{0, 'a'}
我缺少什么?
>>> s1.union(s2)
{0, 1, 'a'}