Python报错”TypeError: ‘super’ object is not callable “怎么处理?

  • Post category:Python

问题描述:

在使用Python的面向对象编程中,如果在子类中使用super()方法调用父类中的方法或属性时,有时会出现以下的错误信息:

TypeError: 'super' object is not callable

这种错误信息通常出现在如下的代码中:

class Child(Parent):
    def __init__(self):
        super().__init__()
        # 省略其它代码...

问题分析:

这个错误的报出原因是由于super()方法的用法出现了问题。可能的原因如下:

  1. super()方法的参数传递错误。

  2. 子类与父类之间存在多重继承关系,而未指定调用哪一个父类。

  3. Python版本升级导致super()方法的使用方式发生了变化。

  4. Python环境的问题。

解决方法:

针对上述问题1和2,可以通过改变super()方法的参数传递方式来进行解决,代码如下:

class Child(Parent):
    def __init__(self):
        super(Child, self).__init__()
        # 省略其它代码...

其中,super()方法的参数说明如下:

  1. 第一个参数是当前类名。

  2. 第二个参数是当前实例。

当然,如果你使用的是Python 3.x版本,你可以直接使用super()方法,代码如下:

class Child(Parent):
    def __init__(self):
        super().__init__()
        # 省略其它代码...

针对问题3和4,通常可以尝试升级或者更换Python环境进行解决。