title: Why does this error say I'm giving the function two arguments?
body: <p>I define a graph class which has a function for taking a node name and adding the name and node to a dictionary.When I run the program, I receive the error at the bottom. Why does it think I am giving it two arguments?</p>
  
  <pre><code>class Graph:
  
      def __init__(self):
          self.node_list = {}
          self.number = 0
  
      def node(node_name):
          if node_name in self.node_list.keys:
              return node_list[node_name]
          else:
              node_list[node_name] = Node()
      ...
  
  def PrefixTrieConstruction(patterns):
      trie = Graph()
      trie.node('root')
  
  for pattern in patterns:
      currentNode = trie.node('root')
      for symbol in pattern:
          for daughter in currentNode.daughters:
              if daughter.label == symbol:
                  currentNode = daughter
                  break
          else:
              node_name = Trie.name_node()
              Trie.node(node_name)
              Trie.edge(currentNode, node_name, symbol)
              currentNode = node_name
  return Trie
  
  
  
  Traceback (most recent call last):
    File "PythonProject2.3.py", line 168, in &lt;module&gt;
      main()
    File "PythonProject2.3.py", line 163, in main
      TrieMatching(text, PrefixTrieConstruction(patterns))
    File "PythonProject2.3.py", line 68, in PrefixTrieConstruction
      trie.node('root')
  TypeError: node() takes 1 positional argument but 2 were given
  </code></pre>