elementtree behavior

Fredrik Lundh 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>
> here
> 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
    explicit test.

    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 mailing list