Python中super()函數(shù)如何使用
在Python中,我們經(jīng)常會(huì)遇到子類需要調(diào)用父類的方法的情況。這時(shí)候就可以使用super()函數(shù)來(lái)實(shí)現(xiàn)。super()函數(shù)是用于在子類中調(diào)用父類的一個(gè)方法。Python 3.x版本的實(shí)現(xiàn)在Python
在Python中,我們經(jīng)常會(huì)遇到子類需要調(diào)用父類的方法的情況。這時(shí)候就可以使用super()函數(shù)來(lái)實(shí)現(xiàn)。super()函數(shù)是用于在子類中調(diào)用父類的一個(gè)方法。
Python 3.x版本的實(shí)現(xiàn)
在Python 3.x版本中,使用super()函數(shù)的語(yǔ)法是:super().parent_method()。其中,parent_method是父類中的方法名。
例如,在以下示例中,我們定義了兩個(gè)類A和B。類A有一個(gè)show()方法,而類B繼承了類A,并且增加了一個(gè)show1()方法。在show1()方法中,我們使用super().show()來(lái)調(diào)用父類A中的show()方法。
```python
class A(object):
def show(self,x):
print('A class: {}' .format(x))
class B(A):
def show1(self,x):
super().show(x)
print('B class: {}' .format(x))
b B()
(1)
```
運(yùn)行結(jié)果為:
```
A class: 2
B class: 1
```
Python 2.x版本的實(shí)現(xiàn)
在Python 2.x版本中,使用super()函數(shù)的語(yǔ)法稍有不同:super(子類名, self).parent_method()。其中,子類名是子類自身的類名。
以下示例展示了在Python 2.x版本中使用super()函數(shù)的方法:
```python
class A(object):
def show(self,x):
print('A class: {}' .format(x))
class B(A):
def show1(self,x):
super(B, self).show(x)
print('B class: {}' .format(x))
b B()
(1)
```
運(yùn)行結(jié)果為:
```
A class: 2
B class: 1
```
實(shí)例
最后,讓我們看一個(gè)更具體的示例來(lái)說(shuō)明super()函數(shù)的用法。
```python
class FooParent(object):
def __init__(self):
'I'm the parent.'
print ('Parent')
def bar(self,message):
print ("%s from Parent" % message)
class FooChild(FooParent):
def __init__(self):
# 首先找到FooChild的父類(就是類FooParent),然后把類FooChild的對(duì)象轉(zhuǎn)換為類FooParent的對(duì)象
super(FooChild,self).__init__()
print('Child')
def bar(self,message):
super(FooChild, self).bar(message)
print ('Child bar fuction')
print ()
if __name__ '__main__':
fooChild FooChild()
('HelloWorld')
```
運(yùn)行結(jié)果為:
```
Parent
Child
HelloWorld from Parent
Child bar fuction
I'm the parent.
```
通過(guò)這個(gè)示例,我們可以清楚地看到在子類中使用super()函數(shù)調(diào)用父類的方法的過(guò)程。