Ismael Garrido schrieb:
Hello.

This is my code:
class Node:
   def __init__(self, tag, value=None, **kwargs):
       self.tag = tag
       self.value = value
       self.kwargs = kwargs
       self.childs = []

   def addChild(self, tag, value=None, **kwargs):
       node = Node(tag, value, kwargs)
       self.childs.append(node)

def __repr__(self):
return "Tag %s ; value %s ; kwargs %s ; childs %s" % (self.tag, self.value, self.kwargs, self.childs)
And this is what I do to test it:
>>> ppal = Node("Test", value="Test")
>>> ppal.addChild("test", value=2)


Traceback (most recent call last):
 File "<pyshell#75>", line 1, in -toplevel-
   ppal.addChild("test", value=2)
 File "...node.py", line 10, in addChild
   node = Node(tag, value, kwargs)
TypeError: __init__() takes at most 3 arguments (4 given)

This means, afaik, __init__() takes at most 3 non-keyword arguments (plus an arbitrary number of keyword-arguments).

You passed 4 non-keyword - arguments, the first beeing (implicitely)
self (i. e. node), and then three more: tag, value, kwargs.
(In your case kwargs is the empty dictionary.)

I suppose you wanted to pass addChild's **kwargs
to Node's **kwargs, which goes like this:

   def addChild(self, tag, value=None, **kwargs):
       node = Node(tag, value, **kwargs)
       self.childs.append(node)

HTH,
Gregor


I don't understand. Why 4 arguments are given? What can I do to solve that?

The idea of the class is to be able to create a "tree". Where each node can have subnodes, which in turn can have their subnodes...

Thanks
Ismael

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor



-- Gregor Lingl Reisnerstrasse 3/19 A-1030 Wien

Telefon: +43 1 713 33 98
Mobil:   +43 664 140 35 27

Autor von "Python für Kids"
Website: python4kids.net
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to