向python2 / 3的super()返回兼容调用

时间:2018-09-01 15:02:11

标签: python python-3.x python-2.7 inheritance super

我需要一些代码才能在Python 2和3中运行。 我上课

class myClass:
  def __init__(self):

带着孩子。我尝试过:

  from myClassfile import myClass as myBaseClass
  class myClass(myBaseClass):
          def __init__(self):
              super().__init__()

但是由于已知的python2 / 3差异而失败。 我已关注TypeError: super() takes at least 1 argument (0 given) error is specific to any python version?

直到:

from myClassfile import myClass as myBaseClass
class myClass(myBaseClass):

  def __init__(self):
      super(myClass,self).__init__()

但这仍然由于以下原因而失败:

TypeError: super() argument 1 must be type, not classobj

1 个答案:

答案 0 :(得分:1)

在Python 2中,一个类必须继承自object才能成为new-style-class

class myClass(object):
    def __init__(self):

在Python 3中,这可能会完成,也可能不会完成-不会有什么不同。

由于在代码myClass中继承自myBaseClass,因此应确保myBaseClass从对象继承:

class myBaseClass(object):
    ...

class myClass(myBaseClass):
    def __init__(self):
        super(myClass, self).__init__()