转自:http://www.weidianyuedu.com/content/3213672432628.html
最近有同学问我关于Python类中的super()和__init__()共同点和不同点的问题, 我今天把它们两个的异同点总结了一下,希望可以帮助遇到同样困惑的同学。
单继承时super()和__init__()实现的功能是类似的
class Base(object):
def init(self):
print ‘Base create’
class childA(Base):
def init(self):
print 'creat A ',
Base.init(self)
class childB(Base):
def init(self):
print 'creat B ',
super(childB, self).init()
base = Base()
a = childA()
b = childB()
输出结果:
Base create
creat A Base create
creat B Base create
区别是使用super()继承时不用显式引用基类。
super()只能用于新式类中
把基类改为旧式类,即不继承任何基类
class Base():
def init(self):
print ‘Base create’
执行时,在初始化b时就会报错:
super(childB, self).init()
TypeError: must be type, not classobj