rank vote url
19 710 261 493 url

理解Python中super()和init()方法

我试着理解super()方法.从表面上看,两个子类实现的功能都一样.我想问它们俩的区别在哪里?

  1. class Base(object):
  2. def __init__(self):
  3. print "Base created"
  4. class ChildA(Base):
  5. def __init__(self):
  6. Base.__init__(self)
  7. class ChildB(Base):
  8. def __init__(self):
  9. super(ChildB, self).__init__()
  10. print ChildA(),ChildB()

super()的好处就是可以避免直接使用父类的名字.但是它主要用于多重继承,这里面有很多好玩的东西.如果还不了解的话可以看看官方文档

注意在Python3.0里语法有所改变:你可以用super().init()替换super(ChildB, self).init().(在我看来非常nice)

原文: https://taizilongxu.gitbooks.io/stackoverflow-about-python/content/19/README.html