fredrik at pythonware.com
Mon Sep 27 22:41:04 CEST 2004
Tim Arnold wrote:
>I have an XML snippet that I parse with ElementTree, and I get an element
> called self.makeToc
> Now this code:
> print self.makeToc
> if self.makeToc != None:
> print 'here'
> if self.makeToc: print 'but not here'
> gives this result:
> <Element toc at 40197e88>
> Clearly self.makeToc has a value, so why isn't "if self.makeToc" True?
> That is, if self.makeToc isn't None, why don't I get past 'if self.makeToc'
because it's a sequence without any items.
this is discussed in the element overview:
Note that in ElementTree 1.2 and earlier, the sequence behaviour
means that an element without subelements tests as false (since it's
an empty sequence). To check the return value from a function or
method that may return None instead of a node, you must use an
node = fetchnode()
if not node: # careful!
print "node not found, or node has no subnodes"
if node is None:
print "node not found"
More information about the Python-list