Python 2:创建从HTMLParser继承的抽象基类

时间:2016-11-14 19:04:47

标签: python python-2.7 inheritance html-parsing abc

我在最新的Python 2项目(2.7.12)中一直使用HTML解析器。我想创建一个基类,我的所有HTML解析器子类都可以从中继承。但是,我也希望这个基类(继承自HTMLParser)成为一个抽象基类。

#!/usr/bin/env python2

import abc
from HTMLParser import HTMLParser


class MyParser(HTMLParser):
    __metaclass__ = abc.ABCMeta

parser = MyParser()

但是,当我尝试运行此文件时,收到以下错误(带有堆栈跟踪):

Traceback (most recent call last):
  File "./sandbox.py", line 7, in <module>
    class MyParser(HTMLParser):
  File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/abc.py", line 87, in __new__
    cls = super(ABCMeta, mcls).__new__(mcls, name, bases, namespace)
TypeError: Error when calling the metaclass bases
    a new-style class can't have only classic bases  

我已经Google搜索了很多答案,找到了像TypeError: Error when calling the metaclass bases a new-style class can't have only classic bases这样的帖子。但是,这个特定的帖子处理我可以创建的新式类,我还没有找到任何描述我的特定情况的其他来源(一个继承自类中的类的抽象类) Python stdlib)。

我怀疑Python 2.7提供的HTMLParser类本身并不是一个新类。如果这是问题,我能做些什么吗? abc模块是否提供了实现此类配置的任何方法?

谢谢,
迦勒

0 个答案:

没有答案