Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44454
  • 博文数量: 13
  • 博客积分: 570
  • 博客等级: 中士
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-21 09:23
文章分类

全部博文(13)

文章存档

2010年(7)

2009年(4)

2008年(2)

我的朋友

分类: Python/Ruby

2009-09-13 21:12:57

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

上一篇:tethereal抓分片包

下一篇:列表解析

给主人留下些什么吧!~~