Python super 函數 - Python零基礎入門教程

目錄python

  • 一.Python super 函數簡介
  • 二.Python super 函數語法
  • 三.Python super 函數使用
    • 1.案例一
    • 2.案例二:
  • 四.猜你喜歡

零基礎 Python 學習路線推薦 : Python 學習目錄 >> Python 基礎入門編程

一.Python super 函數簡介

Python 內置函數 super 主要用於類的多繼承中,用來查找並調用父類的方法,因此在單重繼承中用不用 super 都不要緊;可是,使用 super   是一個好的習慣。通常咱們在子類中須要調用父類的方法時纔會這麼用;ide

二.Python super 函數語法

'''
參數:
    type — 類,通常是類名;
    object-or-type — 類,通常是 self;

返回值:無
'''

super(type,object-or-type)

三.Python super 函數使用

1.案例一

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(我的博客地址): www.codersrc.com
@File:Python super 函數.py
@Time:2021/04/29 07:37
@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(我的博客地址): www.codersrc.com
@File:Python super 函數.py
@Time:2021/04/29 07:37
@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 完成,例如:學習

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(我的博客地址): www.codersrc.com
@File:Python super 函數.py
@Time:2021/04/29 07:37
@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):
         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()

'''
輸出結果:

汪汪汪

不是普通狗,能飛
'''

四.猜你喜歡

  1. Python for 循環
  2. Python 字符串
  3. Python 列表 list
  4. Python 元組 tuple
  5. Python 字典 dict
  6. Python 條件推導式
  7. Python 列表推導式
  8. Python 字典推導式
  9. Python 函數聲明和調用
  10. Python 不定長參數 *argc/**kargcs
  11. Python 匿名函數 lambda
  12. Python return 邏輯判斷表達式
  13. Python 字符串/列表/元組/字典之間的相互轉換
  14. Python 局部變量和全局變量
  15. Python type 函數和 isinstance 函數區別
  16. Python is 和 == 區別
  17. Python 可變數據類型和不可變數據類型
  18. Python 淺拷貝和深拷貝 
相關文章
相關標籤/搜索