2017-04-14 48 views
0

xml文件是這樣的:Python的ElementTree的XML解析:元素對象的布爾值是奇怪

<aiml> 
<category> 
    <pattern>*test*</pattern> 
    <template><srai>test</srai></template> 
</category> 
</aiml> 

麻煩的是,當我檢查srai的布爾值,則返回false

(Pdb) not srai_tag 
True 
(Pdb) srai_tag 
<Element 'srai' at 0x10e08fea8> 
(Pdb) not template 
False 
(Pdb) template 
<Element 'template' at 0x10e08fe58> 

我python版本是3.6.1。

+0

無論他們希望如何,類都可以自由定義True/False。你知道'Element'類是如何定義它的嗎? –

+0

噢,他們會改變未來版本中的'__bool__'方法。 –

回答

1

我檢查了類xml.etree.ElementTree.Element,他們會在將來改變它。感謝John Gordon的提醒。

def __bool__(self): 
    warnings.warn(
     "The behavior of this method will change in future versions. " 
     "Use specific 'len(elem)' or 'elem is not None' test instead.", 
     FutureWarning, stacklevel=2 
     ) 
    return len(self._children) != 0 # emulate old behaviour, for now