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