我做一个分配编译帕斯卡尔的一个子集,并在最初的方案还有的像这样的代码行:为什么下面的代码返回True?
if x.tp == y.tp in {Bool, Int}:
some other code ...
这让我真的很困惑,x.tp == y.tp
返回一个布尔值True
或False
,因此True/False in {Bool, Int}
将始终返回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
这里?
什么是'x.tp'和'y.tp'? –
@ JimFasarakis-Hilliard'x.tp'和'y.tp'都是这两种类型。我不确定是否应该发布更多的代码,因为它太长 –