Chinaunix
标题:
super的TypeError错误
[打印本页]
作者:
flyaway57
时间:
2009-09-13 21:12
标题:
super的TypeError错误
今天在学习super这个内建方法的时候,出现了这样的错误“TypeError: super() argument 1 must be type, not classobj”。
首先,分下经典类和新式类的区别
经典类:没有父类
新式类:必须有继承的类,如果什么都不想继承,可以继承到objcet
super是只能在新式类里面使用,因为自己定义的那个类是一个经典类,所以就有了这样的错误。
解决办法
1. Clase SchoolMember:
def __init__(self, name, age)
self.name = name
self.age = age
Clase Teacher(SchoolMember, object):
def __init__(self, name, age):
super(Teacher, self).__init__(name, age)
2. Clase SchoolMember(object):
def __init__(self, name, age)
self.name = name
self.age = age
Class Teacher(SchoolMember):
def __init__(self, name, age):
super(Teacher, self).__init__(name, age)
如果你的父类需要被继承很多次的话,还是建议用第二种方式。
使用super()的好处是,你不需要明确提供父类。这就意味着如果改变了继承关系,只需要修改一行代码(class本身)。
本文来自ChinaUnix博客,如果查看原文请点:
http://blog.chinaunix.net/u2/82912/showart_2051444.html
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2