Link.finder.py具有:
import HTMLParser
from urlparse import urlparse
class LInkFinder(HTMLParser):
def __init__(self):
super.__init__()
def handle_starttag(self, tag, attrs):
print(tag)
def error(self, message):
pass
finder = LInkFinder()
finder.feed('<html><head><title>Test</title></head>'
'<body><h1>Parse me!</h1></body></html>')
我收到此错误:
Traceback (most recent call last):
File "/Users/sijier/PycharmProjects/day1/link_finder.py", line 4, in <module>
class LInkFinder(HTMLParser):
TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)
我应该在pyhon 2.7版中使用 init 吗? 这是什么问题?又为什么呢? 有帮助吗?
答案 0 :(得分:0)
此代码存在几个问题。最初的情况是您尝试对HTMLParser 模块进行子类化,而不是该模块所包含的 class 。您应该这样做:
from HTMLParser import HTMLParser
解决此问题后,您将在__init__
方法中发现问题;您不能只引用super
而不调用它,在Python 2中,您需要在其中传递当前类和self实例。但是实际上,仅定义一种方法来调用超类版本是没有意义的。您应该完全删除该__init__
定义。