您的位置:首页 > 编程语言 > Python开发

[转载]python中super出现的TypeError: must be type, not classobj 原因及解决

2017-08-25 17:03 666 查看
原文转载自 http://blog.csdn.net/andos/article/details/8973368
示例如下

[python]
view plain
copy

class A():  
     def __init__(self):pass  
  
class B(A):  
     def __init__(self):  
           super(A, self).__init__()  

调用B创建对象时出现错误

[plain]
view plain
copy

TypeError: must be type, not classobj   

查找资料之后发现,python中super只能应用于新类,而不能应用于经典类
所谓新类就是所有类都必须要有继承的类,如果什么都不想继承,就继承到object类。下面是一个新类的例子

[python]
view plain
copy

class A(B):  
     ....  

所谓经典类就是什么都不用继承的类,例如最初的A类就是经典类,下面是一个经典类的例子

[python]
view plain
copy

class A():  
     ....  

产上上面的问题,而自己又不知道父类该继承什么,最简单的方法就是让它去继承object类

将class A改为如下

[html]
view plain
copy

class A(object):  
    .....  

则再调用B的实例时,一切正常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python
相关文章推荐