python 2.7 - 如何调用父类构造函数

时间:2016-02-05 03:22:20

标签: python python-2.7

我有如下的基类

class FileUtil:
    def __init__(self):
        self.outFileDir = os.path.join(settings.MEDIA_ROOT,'processed')
        if not os.path.exists(outFileDir):
            os.makedirs(outFileDir)
    ## other methods of the class

我正在扩展这个课程如下:

class Myfile(FileUtil):
    def __init__(self, extension):
        super(Myfile, self).__init__()
        self.extension = 'text'
    ## other methods of class

但是我得到了以下错误?

super(Myfile, self).__init__()
TypeError: super() takes at least 1 argument (0 given)

我浏览了很多文档,发现在2.x和3.x中调用super()有不同的sytex。我尝试了两种方法,但收到了错误。

2 个答案:

答案 0 :(得分:5)

您有2个选项

旧样式类,你应该直接调用超级构造函数。

class FileUtil():
    def __init__(self):
        pass

class Myfile(FileUtil):
    def __init__(self, extension):
        FileUtil.__init__(self)

新样式类,继承自基类中的对象,并且您当前对super的调用将被正确处理。

class FileUtil(object):
    def __init__(self):
        pass

class Myfile(FileUtil):
    def __init__(self, extension):
        super(Myfile, self).__init__()

答案 1 :(得分:0)

您可能还需要使用FileUtil功能创建super()课程:

class FileUtil(object):
    def __init__(self):
        super(FileUtil, self).__init__()
        ...