Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4565530
  • 博文数量: 1214
  • 博客积分: 13195
  • 博客等级: 上将
  • 技术积分: 9105
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-19 14:41
个人简介

C++,python,热爱算法和机器学习

文章分类

全部博文(1214)

文章存档

2021年(13)

2020年(49)

2019年(14)

2018年(27)

2017年(69)

2016年(100)

2015年(106)

2014年(240)

2013年(5)

2012年(193)

2011年(155)

2010年(93)

2009年(62)

2008年(51)

2007年(37)

分类: Python/Ruby

2012-09-06 09:50:03

文章来源:http://gcoder.blogbus.com/logs/42444130.html

super() argument 1 must be type, not classobj

查了下原因,了解到PYTHON里的SUPER只能用在新式类中,不能用于以前的经典类,如果基类是经典类则会出这个错。

新式类:就是所有类都必须继承的类,如果什么都不想继承,就继承到object类。

经典类:没有父类

不过还是发现super的一个问题,如果子类继承自两个父类,那super如何决定调用哪一个父类的方法呢?我试验的结果是调用第一个父类的。这时通常使用直接调用。

class A(object):
  def __init__(self):
    print "a"
class B(object):
  def __init__(self):
    print "b"

class AB(A,B):
  def __init__(self):
    super(AB, self).__init__()
    A.__init__(self)
    B.__init__(self)
   
def main():
  ab = AB();

if __name__ == "__main__":
  main()

阅读(920) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~