首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:__init__()只取1个参数(3给定) pyXML

TypeError:__init__()只取1个参数(3给定) pyXML
EN

Stack Overflow用户
提问于 2012-08-10 15:50:35
回答 2查看 9.1K关注 0票数 4

我最近开始学习如何使用python解析xml文件。我从http://pyxml.sourceforge.net/topics/howto/node12.html那里学到了这个教程

当我运行以下代码时,会得到错误:

代码语言:javascript
复制
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)

代码:

代码语言:javascript
复制
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')

同样,在最后一行中,我将文件(它位于当前工作目录中)传递给它,这是处理文件的正确方式吗?

EN

回答 2

Stack Overflow用户

发布于 2012-08-10 15:53:31

以_init_的名义出现了太多的_。构造函数的声明应该是:

代码语言:javascript
复制
def __init__(self, title, number):

不是:

代码语言:javascript
复制
def __init___(self, title, number):

注意额外的下划线符号。

票数 8
EN

Stack Overflow用户

发布于 2012-08-10 15:54:15

你有一个错误-这里有三个下划线:

代码语言:javascript
复制
def __init___(self, title, number):

应:

代码语言:javascript
复制
def __init__(self, title, number):

因为它与名称__init__不完全匹配,所以Python只知道默认的构造函数def __init__(self)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11905148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档