python super函式使用方法詳解

2022-09-26 12:27:26 字數 2610 閱讀 1115

python內建函式super()主要用於類的多繼承中,用來查詢並呼叫父類的方法,所以在單重繼承中用不用 super 都沒關係;但是,使用 super() 是乙個好的習慣。一般我們在子類中需要呼叫父類的方法時才會這麼用;

super(type,object-or-type)

引數:type — 類,一般是類名;

object-or-type — 類,一般是 self;

返回值:無

1.案例一:

# !usr/bin/env python

# -*- coding:utf-8 _*-

"""@author:何以解憂

@blog(個人部落格位址): shuopython.com

@wechat official account(微信***):猿說python

@github:www.github.com

@file:python_super.py

@time:2019/12/29 21:25

@motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!

"""

class a:

def m(self):

print('a')

class b:

def m(self):

print('b')

class c(a):

def m(self):

print('c')

super().m()

c().m()

輸出結果:

ca**分析:

這樣做的好處就是:如果你要改變子類繼承的父類(由a改為b),你只需要修改一行**(class c(a): -> class c(b))即可,而不需要在class c的大量**中去查詢、修改基類名,另外一方面**的可移植性和重用性也更高。

2.案例二:

# !usr/bin/env python

# -*- coding:utf-8 _*-

"""@author:何以解憂

@blog(個人部落格位址): shuopython.com

@wechat official account(微信***):猿說python

@github:www.github.com

@file:python_super.py

@time:2019/12/29 21:25

@motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!

""" www.cppcns.com

class dog:

de程式設計客棧f __init__(self):

self.fly = false

def print_fly(self):

if self.fly:

print('不是普通狗,能飛')

else:

print('普用狗不會飛')

class xiaotianquan(dog):

def __init__(self):

self.sound = true

def print_singwqcbx(self):

if self.sound:

print("汪汪汪")

else:

print("假狗狗")

if __name__ == '__main__':

dog = xiaotianquan()

dog.print_sing() # 能正常輸出

dog.print_fly() # 報錯,attributeerror: 'xiaotianquan' object has no attribute 'fly'

**分析:

雖然子類xiaotianquan繼承父類dog,但是子類直接呼叫父類的print_fly函式,依然會報錯,因為子類沒有父類的fly屬性,上面**可以通過在__init__函式中呼叫super()完成,例如:

程式設計客棧class dog:

def __init__(self):

self.fly = false

def print_fly(self):

if self.fly:

print('不是普通狗,能飛')

else:

print('普用狗不會飛')

class xiaotianquan(dog):

def __init__(self):

super().__init__() # 等效 super(xiaotianquan,self).__init__()

self.fly = true

self.sound = true

def print_sing(self):

if self.sound:

print("汪汪汪")

else:

print("假狗狗")

if __name__ == '__main__':

dog = xiaotianquan()

dog.print_sing(www.cppcns.com)

dog.print_fly()

輸出結果:

汪汪汪不是普通狗,能飛

本文標題: python super函式使用方法詳解

本文位址:

Python super 函式簡介

python 內建函式 描述 super 函式是用於呼叫父類 超類 的乙個方法。super 是用來解決多重繼承問題的,直接用類名呼叫父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查詢順序 mro 重複呼叫 鑽石繼承 等種種問題。mro 就是類的方法解析順序表,其實也就是繼承父類方法時...

pythonsuper 函式的詳解

目錄 python是一門物件導向的語言,定義類時經常要用到繼承,在類的繼承中,子類繼承父類中已經封裝好的方法,不需要再次編寫,如果子類如果重新定義了父類的某一方法,那麼該方法就會覆蓋父類的同名方法,但是有時我們希望子類保持父類方法的基礎上進行擴充套件,而不是直接覆蓋,就需要先呼叫父類的方法,然後再進...

Python super 函式用法總結

了解 super 函式之前,我們首先要知道 super 的用途是啥?語法格式 super type object or type 函式描述 返回乙個 物件,它會將方法呼叫委託給 type 的父類或兄弟類。引數說明 type 類,可選引數。object or type 物件或類,一般是 self,可選...