免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3002 | 回复: 0
打印 上一主题 下一主题

super的TypeError错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-13 21:12 |只看该作者 |倒序浏览
今天在学习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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP