Я делаю задание составить подмножество Паскаля и в исходной программе есть строка кода, как это:Почему следующий код возвращает 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' - оба типа. Я не уверен, что я должен опубликовать больше кода, поскольку он слишком длинный. –