蟒蛇2.7 - 如何调用父类的构造
问题描述:
我有基类,像下面蟒蛇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个选项
老样式类,你应该直接调用超级构造函数。
class FileUtil():
def __init__(self):
pass
class Myfile(FileUtil):
def __init__(self, extension):
FileUtil.__init__(self)
新样式类,继承自基类中的对象,并且您正在处理的超级对象将被正确处理。
class FileUtil(object):
def __init__(self):
pass
class Myfile(FileUtil):
def __init__(self, extension):
super(Myfile, self).__init__()
答
您可能需要使用super()
功能以及创建FileUtil
类:
class FileUtil(object):
def __init__(self):
super(FileUtil, self).__init__()
...
的可能的复制[Python中,调用超构造函数(http://stackoverflow.com/questions/2399307/python-invoke-super-constructor) –
我没有看到你的代码 – tinySandy
我任何麻烦我在Django中使用这段代码。虽然我可以理解Django并没有特定的内容,但仍然在问我是否缺少某些东西。 – virus