91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

石阡县| 巨野县| 潮州市| 遂溪县| 北川| 阿瓦提县| 云和县| 罗甸县| 盖州市| 胶州市| 安吉县| 农安县| 遵化市| 彭山县| 巨野县| 盖州市| 瑞丽市| 太湖县| 巴彦淖尔市| 察雅县| 孙吴县| 浦北县| 密山市| 青岛市| 积石山| 彩票| 汉阴县| 新蔡县| 繁昌县| 鄂托克旗| 望奎县| 古浪县| 山阳县| 古丈县| 宽甸| 托里县| 桦川县| 江源县| 石台县| 庆阳市| 伊川县|