Hello all

Could anyone shed any light on the following Exception? The code which
caused it is below.  Uncommenting the 'super' call in 'XmlNode' gives
the same error. If I make XmlNode a subclass of 'object' rather than
'list' then the code will run.

Thanks in advance.

Exception:

Traceback (most recent call last):
  File "C:\Program
Files\Python\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py",
line 310, in RunScript
    exec codeObject in __main__.__dict__
  File "C:\Documents and Settings\Gerard\My
Documents\Scripts\Python\XmlNode\XmlNode.py", line 5, in ?
    class XmlNode(list):
TypeError: Error when calling the metaclass bases
    __init__() takes at most 2 arguments (4 given)

Code:

from elementtree.SimpleXMLWriter import XMLWriter

class XmlNode(list):
    tag = None
    attrib = None
    value = None
    def __init__(self, tag, **attrib):
        #super(list, self).__init__()
        self.tag = tag
        self.attrib = attrib

    def __repr__(self):
        return "<XmlNode %s at %x>" % (self.tag, id(self))

    def write(self, writer):
        writer.start(self.tag, self.attrib)
        if self.value is not None:
            writer.data(self.value)
##        for node in self:
##            node.write(writer)
        writer.end()

class HtmlElement(XmlNode):
    def __init__(self, tag, value='', **attrib):
        super(HtmlElement, self).__init__(tag=tag, **attrib)
        self.value = value

class li(HtmlElement):
    def __init__(self, value=None, **attrib):
        super(li, self).__init__(tag='li', **attrib)

class ul(HtmlElement):
    def __init__(self, **attrib):
        super(ul, self).__init__(tag='ul', **attrib)

if __name__ == '__main__':
    from StringIO import StringIO

    item = li('item')
    items = ul()
    #items.apppend(item)
    out = StringIO()
    writer = XMLWriter(out)
    items.write(writer)
    print
    print out.getvalue()
    out.close()

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to