Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError: __init__() takes exactly 1 argument (3 given) pyXML

I've recently started to learn how to use python to parse xml files. I took the tutorial from http://pyxml.sourceforge.net/topics/howto/node12.html

When I run the following code I get the error:

Traceback (most recent call last):
  File "C:\Users\Name\Desktop\pythonxml\tutorials\pythonxml\pyxml sourceforge\5.1 Comic Colection\SearchForComic.py", line 30, in -toplevel-
    dh = FindIssue('sandman', '62')
TypeError: __init__() takes exactly 1 argument (3 given)

code:

from xml.sax import saxutils

class FindIssue(saxutils.DefaultHandler):
    def __init___(self, title, number):
        self.search_title, self.search_number = title, number

def startElement(self, name, attrs):
    #if it's not a comic element, ignore it
    if name!= 'comic': return

        # look for the title and number sttributes (see text)
        title = attrs.get('title', None)
        number = attrs.get('number', None)
        if (title == self.search_title and
            number == self.search_number):
                print title, '#' +str (number), 'found'

from xml.sax import make_parser
from xml.sax.handler import feature_namespaces

if __name__ == '__main__':
        #Create a parser
        parser = make_parser()

    #tell the parser that we are not interested in XML namespaces
        parser.setFeature(feature_namespaces, 0)

    #create the handler
    dh = FindIssue('sandman', '62')

    #tell the parse to use our handler
    parser.setContentHandler(dh)

    #parse the input
    parser.parse('collection.xml')

also on the last line I'm passing the file its in the current working directory is this the correct way to address the file?

like image 879
Peter Thomas Avatar asked Dec 16 '22 20:12

Peter Thomas


1 Answers

You've got too many _ in the name of _init_. The declaration of your constructor should be:

def __init__(self, title, number):

not:

def __init___(self, title, number):

Note the extra underscore symbol.

like image 174
Joe Day Avatar answered Jan 05 '23 08:01

Joe Day