python中super出现的TypeError: must be type, not classobj 原因及解决
2015-10-21 19:52
931 查看
示例如下
[python] view
plaincopy
class A():
def __init__(self):pass
class B(A):
def __init__(self):
super(A, self).__init__()
调用B创建对象时出现错误
[plain] view
plaincopy
TypeError: must be type, not classobj
查找资料之后发现,python中super只能应用于新类,而不能应用于经典类
所谓新类就是所有类都必须要有继承的类,如果什么都不想继承,就继承到object类。下面是一个新类的例子
[python] view
plaincopy
class A(B):
....
所谓经典类就是什么都不用继承的类,例如最初的A类就是经典类,下面是一个经典类的例子
[python] view
plaincopy
class A():
....
产上上面的问题,而自己又不知道父类该继承什么,最简单的方法就是让它去继承object类
将class A改为如下
[html] view
plaincopy
class A(object):
.....
则再调用B的实例时,一切正常
[python] view
plaincopy
class A():
def __init__(self):pass
class B(A):
def __init__(self):
super(A, self).__init__()
调用B创建对象时出现错误
[plain] view
plaincopy
TypeError: must be type, not classobj
查找资料之后发现,python中super只能应用于新类,而不能应用于经典类
所谓新类就是所有类都必须要有继承的类,如果什么都不想继承,就继承到object类。下面是一个新类的例子
[python] view
plaincopy
class A(B):
....
所谓经典类就是什么都不用继承的类,例如最初的A类就是经典类,下面是一个经典类的例子
[python] view
plaincopy
class A():
....
产上上面的问题,而自己又不知道父类该继承什么,最简单的方法就是让它去继承object类
将class A改为如下
[html] view
plaincopy
class A(object):
.....
则再调用B的实例时,一切正常
相关文章推荐
- Python包和模块
- 「Python」利用OpenGL作渲染以及离屏渲染
- urllib2库.官方文档翻译
- Python时间,日期,时间戳之间转换
- Python GUI - Tkinter tkMessageBox
- Sublime Text 3 装了Anaconda 写Python代码出现框框的解决办法
- Python里的*args和**kwargs是什么?
- Python学习笔记3
- python struct.pack中的对齐字节问题
- 选择排序算法Java与Python实现
- 【Python】爬虫小结
- python,用django开始第一个网页
- python---格式化字符
- python 全入门手册
- 不要嫌我啰嗦~继续话痨python
- python gui 练习
- 【TypeError: only length-1 arrays can be converted to Python scalars】
- python list 自定义排序
- python 传值与引用问题
- 详解Python中re.sub