赞
踩
今天分享一个我在实际项目中用到过的super()函数,来说说该函数的主要功能是什么,简单来说,super()函数是用来做调用父类的一个方法。
super() 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
我们来看看该函数的语法:
super(type[, object-or-type])
(1)type:类,可选参数
(2)object-or-type :对象或类,一般是 self
我们通过一些实例来了解该函数的用法:
实例1:
- class A:
- def test(self, a):
- b = a+1
- print(b)
- class B(A):
- def test(self, a):
- super().test(a)
-
-
- if __name__ == '__main__':
- R = B()
- R.test(5)
'运行
控制台输出:
分析:
根据上述代码及输出可知,我们的子类B继承了父类A,执行R.test(5),会首先执行子类B-->test()函数super().test(a)调用我们的父类的方法,然后会接着执行父类A-->test()函数,我们接着看多个super()函数的实例。
实例2:
- class A:
- def __init__(self):
- self.language = 'I love python!'
- print ('python')
-
- def test(self,a):
- print('%s'% a)
-
-
-
- class B(A):
- def __init__(self):
- super(B,self).__init__()
- print ('python1')
-
-
- def test(self,a):
- super(B, self).test(a)
- print (self.language)
-
-
-
- if __name__ == '__main__':
- R = B()
- R.test('HelloWorld')
'运行
控制台输出:
分析:
super(B,self)首先就是找到B的父类A,然后把B类的对象转换为A类的对象。
总结:
可以简单的理解为super().xx相当于调用了父类中的xx方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。