示例如下
查找资料之后发现,python中super只能应用于新类,而不能应用于经典类
所谓经典类就是什么都不用继承的类,例如最初的A类就是经典类,下面是一个经典类的例子
则再调用B的实例时,一切正常
class A():
def __init__(self):pass
class B(A):
def __init__(self):
super(A, self).__init__()
调用B创建对象时出现错误
TypeError: must be type, not classobj 查找资料之后发现,python中super只能应用于新类,而不能应用于经典类
所谓新类就是所有类都必须要有继承的类,如果什么都不想继承,就继承到object类。下面是一个新类的例子
class A(B):
....所谓经典类就是什么都不用继承的类,例如最初的A类就是经典类,下面是一个经典类的例子
class A():
....
产上上面的问题,而自己又不知道父类该继承什么,最简单的方法就是让它去继承object类
将class A改为如下
class A(object):
.....则再调用B的实例时,一切正常
解决Python中super使用错误
本文探讨了在Python中使用super()函数时遇到的错误,特别是当试图在经典类上使用它时出现TypeError的情况。通过将类继承自object类来解决此问题,并解释了新类与经典类的区别。
1698

被折叠的 条评论
为什么被折叠?



