<分区>
我正在做一个编译 Pascal 子集的作业,在初始程序中有一行代码如下:
if x.tp == y.tp in {Bool, Int}:
some other code ...
这让我很困惑,因为 x.tp == y.tp
返回一个 bool 值 True
或 False
因此 {Bool, Int}
中的 True/False 将始终返回 False
。
Bool
和Int
的定义如下:
class Int: pass
class Bool: pass
然后,我在该行设置了一个断点,并在 VSCode 的调试器中运行:
>> x.tp
<class 'ST.Int'>
>> y.tp
<class 'ST.Int'>
>> x.tp == y.tp
True
>> a = (x.tp == y.tp)
None
>> a
True
>> a in {Bool, Int}
False
>> x.tp == y.tp in {Bool, Int}
True <----------------------- why does it return True?
为什么 x.tp == y.tp in {Bool, Int}
在这里返回 True
?