Python 2.7 2.x 与Python 3.x 3.0 类继承代码的变动 TypeError: super() takes at least 1 argument (0 given)

在python 2.7 运行 python 3.x代码

出现下面的错误

  super().__init__()
TypeError: super() takes at least 1 argument (0 given)

 

  super().__init__()
TypeError: super() takes at least 1 argument (0 given)

这个是因为Python 2.x 与python 3.x 在类继承上的方式不同

python 2.7 是下面的方式 SuperClassName 是要继承类的名字

SupterClassName.__init__(self)

python 3.0 可以直接用super

super().__init__()

python 3.0的方式可以不使用基类的名字,写出的代码抽象度更高。

python 2.7 也可以利用super来实现类继承,不用写出基类名字。ClassName是现在创建的类。

super(ClassName,self).__init__()

只是对于Tkinter 做基类会出问题

super(ClassName,self).__init__()
TypeError: super() argument 1 must be type, not classobj

这个问题不深入研究了。

你可能感兴趣的:(python)