TypeError: setDocumentLocator()缺少一个必需的位置参数'locator'。

4
我运行以下代码时出现错误:

#!/usr/bin/env python

from xml import sax
import sys


class MySaxHandler(sax.ContentHandler, object):

    def startElement(self, name, attrs):
        print(name, attrs)

if __name__ == '__main__':
    sax.parse(sys.stdin, MySaxHandler)

以下是跟踪信息:

Traceback (most recent call last):
  File "/tmp/a.py", line 13, in <module>
    sax.parse(sys.stdin, MySaxHandler)
  File "/usr/lib/python3.6/xml/sax/__init__.py", line 33, in parse
    parser.parse(source)
  File "/usr/lib/python3.6/xml/sax/expatreader.py", line 110, in parse
    self._cont_handler.setDocumentLocator(ExpatLocator(self))
TypeError: setDocumentLocator() missing 1 required positional argument: 'locator'

为什么会这样?
1个回答

5

这个问题很微妙,但是你需要传递一个实例到处理程序中,而不是类。请看这一行代码:

sax.parse(sys.stdin, MySaxHandler)

应该改为:
sax.parse(sys.stdin, MySaxHandler())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接