在python 2.7中扩展类,使用super()

也许这是一个愚蠢的问题,但为什么这个代码在
python 2.7中不起作用?

from ConfigParser import ConfigParser

class MyParser(ConfigParser):
    def __init__(self, cpath):
        super(MyParser, self).__init__()
        self.configpath = cpath
        self.read(self.configpath)

它失败了:

TypeError: must be type, not classobj

在super()行.

最佳答案 很可能是因为ConfigParser不从对象继承,因此,不是
new-style class.这就是为什么超级不能在那里工作的原因.

检查ConfigParser定义并验证它是否是这样的:

class ConfigParser(object): # or inherit from some class who inherit from object

如果没有,那就是问题所在.

我对你的代码的建议不是使用super.只需在ConfigParser上直接调用self,就像这样:

class MyParser(ConfigParser):
    def __init__(self, cpath):
        ConfigParser.__init__(self)
        self.configpath = cpath
        self.read(self.configpath)
点赞