也许这是一个愚蠢的问题,但为什么这个代码在
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)