中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python super函數使用方法詳解

發布時間:2020-08-29 05:32:32 來源:腳本之家 閱讀:154 作者:猿說python 欄目:開發技術

一、super函數簡介

python內置函數super()主要用于類的多繼承中,用來查找并調用父類的方法,所以在單重繼承中用不用 super 都沒關系;但是,使用 super() 是一個好的習慣。一般我們在子類中需要調用父類的方法時才會這么用;

二、super函數語法

super(type,object-or-type)

參數:

type — 類,一般是類名;

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

返回值:無

三、super函數使用

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()

輸出結果:

C

A

代碼分析:

這樣做的好處就是:如果你要改變子類繼承的父類(由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:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
"""
 
class Dog:
  def __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_sing(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() 
  dog.print_fly()

輸出結果:

汪汪汪

不是普通狗,能飛

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新宾| 金乡县| 佛学| 弋阳县| 原阳县| 胶州市| 集贤县| 堆龙德庆县| 资中县| 定远县| 阳泉市| 永善县| 姜堰市| 安化县| 奈曼旗| 修武县| 丘北县| 平利县| 阜新| 东山县| 莱阳市| 惠东县| 从江县| 玉门市| 昌吉市| 辽宁省| 教育| 徐水县| 综艺| 正镶白旗| 肇庆市| 南漳县| 四平市| 甘德县| 惠东县| 江都市| 泽库县| 新蔡县| 泾川县| 双鸭山市| 巩留县|