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:

    http://effbot.org/zone/element.htm

    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"

</F> 






More information about the Python-list mailing list