back compatible call to super() for python2/3
本问题已经有最佳答案,请猛点这里访问。
我有一些代码需要在python 2和3中运行。我有一节课
1 2 | class myClass: def __init__(self): |
带着孩子。我已经尝试过:
1 2 3 4 | from myClassfile import myClass as myBaseClass class myClass(myBaseClass): def __init__(self): super().__init__() |
但由于已知的python2/3差异,它失败了。我遵循了typeerror:super()至少接受1个参数(给定0个参数),错误是特定于任何Python版本的?
直到:
1 2 3 4 5 | from myClassfile import myClass as myBaseClass class myClass(myBaseClass): def __init__(self): super(myClass,self).__init__() |
但这仍然失败,因为:
1 | TypeError: super() argument 1 must be type, not classobj |
在python 2中,类必须从
1 2 | class myClass(object): def __init__(self): |
在python 3中,这可能完成,也可能不完成——这没有什么区别。
由于在您的代码中,
1 2 3 4 5 6 | class myBaseClass(object): ... class myClass(myBaseClass): def __init__(self): super(myClass, self).__init__() |