python2/3 向后兼容调用 super()

back compatible call to super() for python2/3

我有一些代码需要在 Python 2 和 3 中 运行。 我有一个 class

class myClass:
  def __init__(self):

与 child。我试过:

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

但由于已知 python2/3 差异,它失败了。 我已关注

直到:

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

在 Python 2 中,class 必须继承自 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__()