title: TypeError: 'xml.etree.ElementTree.Element' object is not callable
body: <p>I am converting to Python an application I had earlier written in C#. It's a GUI application to manage unknown words while learning a new language. When the application starts, I have to load the words from the XML file which has a pretty simple structure:</p>
  
  <pre><code>&lt;Words&gt;
     &lt;Word&gt;
        &lt;Word&gt;test&lt;/Word&gt;
        &lt;Explanation&gt;test&lt;/Explanation&gt;
        &lt;Translation&gt;test&lt;/Translation&gt;
        &lt;Examples&gt;test&lt;/Examples&gt;
     &lt;/Word&gt;
  &lt;/Words&gt;
  </code></pre>
  
  <p>Nevertheless, I am getting:</p>
  
  <blockquote>
    <p>/usr/bin/python3.5 /home/cali/PycharmProjects/Vocabulary/Vocabulary.py
    Traceback (most recent call last):   File
    "/home/cali/PycharmProjects/Vocabulary/Vocabulary.py", line 203, in
    
        main()   File "/home/cali/PycharmProjects/Vocabulary/Vocabulary.py", line 198, in
    main
        gui = Vocabulary(root)   File "/home/cali/PycharmProjects/Vocabulary/Vocabulary.py", line 28, in
    <strong>init</strong>
        self.load_words()   File "/home/cali/PycharmProjects/Vocabulary/Vocabulary.py", line 168, in
    load_words
        w = Word(node('Word').text, node('Explanation').text, node('Translation').text, node('Example').text) TypeError:
    'xml.etree.ElementTree.Element' object is not callable</p>
  </blockquote>
  
  <p>This is the original LoadWords() method:</p>
  
  <pre><code>void LoadWords()
  {
      words.Clear();
      listView1.Items.Clear();
      string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
      string vocabulary_path = path + "\\Vocabulary\\Words.xml";
      if (!Directory.Exists(path + "\\Vocabulary"))
          Directory.CreateDirectory(path + "\\Vocabulary");
  
      if (!File.Exists(vocabulary_path))
      {
          XmlTextWriter xW = new XmlTextWriter(vocabulary_path, Encoding.UTF8);
          xW.WriteStartElement("Words");
          xW.WriteEndElement();
          xW.Close();
      }
      XmlDocument xDoc = new XmlDocument();
      xDoc.Load(vocabulary_path);
      foreach (XmlNode xNode in xDoc.SelectNodes("Words/Word"))
      {
          Word w = new Word();
          w.WordOrPhrase = xNode.SelectSingleNode("Word").InnerText;
          w.Explanation = xNode.SelectSingleNode("Explanation").InnerText;
          w.Translation = xNode.SelectSingleNode("Translation").InnerText;
          w.Examples = xNode.SelectSingleNode("Examples").InnerText;
          words.Add(w);
          listView1.Items.Add(w.WordOrPhrase);
          WordCount();
      }
  
  }
  </code></pre>
  
  <p>I don't know how to access each node's inner text.</p>
  
  <p>Here is my load_words function:</p>
  
  <pre><code>def load_words(self):
  
      self.listBox.delete(0, END)
      self.words.clear()
  
      path = os.path.expanduser('~/Desktop')
      vocabulary = os.path.join(path, 'Vocabulary', 'Words.xml')
  
      if not os.path.exists(vocabulary):
          if not os.path.exists(os.path.dirname(vocabulary)):
              os.mkdir(os.path.dirname(vocabulary))
          doc = ET.Element('Words')
          tree = ET.ElementTree(doc)
          tree.write(vocabulary)
      else:
          tree = ET.ElementTree(file=vocabulary)
  
      for node in tree.findall('Word'):
          w = Word(node('Word').text, node('Explanation').text, node('Translation').text, node('Example').text)
  
          self.words.append(w)
          self.listBox.insert(w.wordorphrase)
  </code></pre>