【问题标题】:back compatible call to super() for python2/3 [duplicate]为python2 / 3返回对super()的兼容调用[重复]
【发布时间】:2019-02-07 07:21:28
【问题描述】:

我有一些代码需要在 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

【问题讨论】:

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


    【解决方案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__()
    

    【讨论】:

      猜你喜欢
      • 2015-12-24
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 2017-11-27
      • 2011-10-07
      • 2015-07-22
      相关资源
      最近更新 更多