Skip to main content
 首页 » 编程设计

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

2025年05月04日30JeffreyZhao

我有如下的基类

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是不一样的。我尝试了两种方法,但都出错了。

请您参考如下方法:

你有两个选择

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

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__()