【发布时间】:2017-07-09 00:51:19
【问题描述】:
我正在做一个编译 Pascal 子集的作业,在初始程序中有这样一行代码:
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都是类型。我不确定是否应该发布更多代码,因为它太长了
标签: python python-3.x