我有如下的基类
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。我尝试了两种方法,但收到了错误。
答案 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__()
...