TypeError: __init __ () takes exactly 1 argument (3 data) pyXML

I recently started learning how to use python to parse XML files. I took a tutorial from http://pyxml.sourceforge.net/topics/howto/node12.html

When I run the following code, I get an 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 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 in the last line, I transfer the file in the current working directory, is this the correct way to access the file?

+4
source share
2 answers

You have too many _ on behalf of __init__. Your constructor declaration should be:

 def __init__(self, title, number): 

not

 def __init___(self, title, number): 
+8
source

You have a typo - there are three underscores:

 def __init___(self, title, number): 

Must be:

 def __init__(self, title, number): 

Since it doesn't exactly match the name __init__ , Python only knows about the default constructor, def __init__(self) .

+4
source

All Articles