lxml 元素布尔检查

Gil*_*tes 6 python lxml

这段代码:

from lxml.html import fromstring, tostring

s = '<span class="left">Whatever</span>'
e = fromstring(s)
print(tostring(e))
print(bool(e))
Run Code Online (Sandbox Code Playgroud)

输出:

<span class="left">Whatever</span>
False
Run Code Online (Sandbox Code Playgroud)

为什么?布尔检查如何在这个类中工作?请指点我相关的文档或代码。

ps
我使用lxml3.3.5

Bla*_*ack 7

Python 文档中的相关位置:https : //docs.python.org/2/library/stdtypes.html#truth-value-testing

对象的“真实性”由__nonzero__()方法决定,如果不存在,则由方法的结果决定__len__()。由于您的元素没有子元素,即其长度为 0,因此被视为False真值。


Jor*_*ley 0

这就是我用你的代码得到的......

>>> print(bool(e))
__main__:1: FutureWarning: The behavior of this method will change in future ve
sions. Use specific 'len(elem)' or 'elem is not None' test instead.
False
>>> e
<Element span at 0x2db85a0>
>>>
Run Code Online (Sandbox Code Playgroud)

似乎很清楚他们重载了该__bool__方法并告诉您应该如何实际检查它......