码迷,mamicode.com
首页 > 编程语言 > 详细

Python内置函数之super()

时间:2017-08-14 19:05:08      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:方便   span   logs   class   log   维护   有一个   -o   init   

super(type[,object-or-type])

super()的作用在于类继承方面。

他可以实现不更改类内部代码,但是改变类的父类。

例子:

一般我们继承类的方式:
>>> class A:
...   def __init__(self):
...     print(A.__init__)
...
>>> class B(A):
...   def __init__(self):
...     print(B.__init__)
...     A.__init__(self)
...
>>> b = B()
<function B.__init__ at 0x000000E8A87DC840>
<function A.__init__ at 0x000000E8A87DC9D8>
这样有一个问题,当B的父类换为A1时,又要去修改B类内部的值,这样做很不方便!
于是有了super()这样的替代方式:
>>> class B(A):
...   def __init__(self):
...     print(B.__init__)
...     super().__init__() #等效于super(B,self).__init__()
...
>>> b = B()
<function B.__init__ at 0x000000E8A87DC7B8>
<function A.__init__ at 0x000000E8A87DC9D8>
这样的方式避免了修改B类的内部,便于维护了。
如果只有一个参数,则不会继承父类。#super(B).__init__(),只会调用B类本身
如果第二个参数是一个类对象,那么该类对象是第一个参数的子类。

 

Python内置函数之super()

标签:方便   span   logs   class   log   维护   有一个   -o   init   

原文地址:http://www.cnblogs.com/leomei91/p/7359157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!