[BangPypers] ElementTree object instance evaluates to False?

Vikas BN vikas.bn at gmail.com
Tue Dec 6 05:19:51 CET 2011


Hi All,

   I'm working on a script to parse XML files and am using
cElementTree for the same. However,
   I was under the impression that anything that's a None type or 0 or
"" would evaluate to False
   and the rest would be True (incl an instance of an object).

   That doesn't seem to work with the Element instance. Here's what I get :


>>> import xml.etree.cElementTree as cet
>>> f1 = '/home/vikasn/test.xml'
>>> t1 = cet.parse(f1)
>>>root = t1.getroot()
>>> children = root.getchildren()
>>> len(children)
3
>>> c1 = children[0]
>>> if c1:
...  print "true"
... else:
...  print "false"
...
false
>>> c1
<Element 'name' at 0x2afb45073a50>

    Because of this, I need to resort to clunky stuff like so:

if c1.tag:
  # do something

     To test if my understanding of what evaluates to true/false is
correct or not, I tried the following and seems to be what I expect
would happen.

>>> class Test(object):
...  def __init__(self, num):
...   print num
...   self.num = num
...
>>> t = Test(1)
1
>>> t
<__main__.Test object at 0x2afb4507c610>
>>> if t:
...  print "yes"
... else:
...  print "no"
...
yes
>>>

    Anyone else encountered this or even have any insights regarding
this behaviour? I'm using Python2.7.2 on Linux
    if that matters.


Thanks!
Vikas


More information about the BangPypers mailing list