我试图找出object.__eq__
和object.__contains__
的工作方式,但无法理解以下情况:
>>> '' in ''==''
True
>>> '' in 'g'=='g'
True
>>> '' in 'g'!='g'
False
>>> type('g'!='g')
<class 'bool'>
>>> type('g'=='g')
<class 'bool'>
>>> '' in False
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable
>>> type(False)
<class 'bool'>
据我了解,'' in ''==''
检查True
是否包含''
。 ''==''
和True
的类型均为bool
,但只有'' in False
引发TypeError
。为什么会发生这种情况,最后'' in 'g'!='g'
的含义是什么?