今天在学习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本身)。
阅读(713) | 评论(0) | 转发(0) |