那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python類的繼承詳解

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-08 16:40 ? 次閱讀

python類的繼承

類的繼承,跟人類繁衍的關系相似。

被繼承的類稱為基類(也叫做父類),繼承而得的類叫派生類(也叫子類),這種關系就像人類的父子關系。

繼承最大的好處是子類獲得了父類的全部變量和方法的同時,又可以根據需要進行修改、拓展。

繼承的語法結構是

class 子類(父類):

1. 單繼承

舉個例子:下面的代碼中。先是定義了一個 People 類,里面有一個 speak 方法。然后再定義一個 Student 類,并繼承自 People 類。

# 父類定義
class People:
    def __init__(self, name, age, weight):
        self.name = name
        self.age = age

    def speak(self):
        print(f"{self.name} 說: 我{self.age}歲。")

# 單繼承示例
class Student(People):
    def __init__(self, name, age, weight, grade):
        # 調用父類的實例化方法
        People.__init__(self, name, age, weight)
        self.grade = grade

由于繼承的機制,Student 實例會擁有 People 類所有屬性和方法,比如下邊我可以直接調用 People 類的 speak 方法。

>>> xm = Student(name="小明", age=10, weight=50, grade="三年級")
>>> xm.speak()
小明 說: 我 10 歲。

你如果不想使用父類的方法,你可以重寫它以覆蓋父類的 speak 方法。

# 單繼承示例
class Student(People):
    def __init__(self, name, age, weight, grade):
        # 調用父類的實例化方法
        People.__init__(self, name, age, weight)
        self.grade = grade

    # 重寫父類的speak方法
    def speak(self):
        print(f"{self.name} 說: 我{self.age}歲了,我在讀{self.grade}")

此時,再調用的話,就會調用自己的方法了

>>> xm = Student(name="小明", age=10, weight=50, grade="三年級")
>>> xm.speak()
小明 說: 我10歲了,我在讀三年級

2. 多繼承

Python 還支持多繼承,可以繼承自多個類。

class 子類(父類1, 父類2, 父類3...):

多繼承的話,情況會比單繼承復雜得多。

假設多個父類都有一個 foo 方法,并且子類沒有重寫 foo 方法,那么 子類 的實例在調用 foo 方法時,應該使用哪個父類的 foo 方法呢?

關于這一點,只要簡單的做個驗證就行啦。

有如下代碼,定義了 7 個類

class D:pass
class C(D):pass

class B(C):
    def show(self):
        print("i am B")

class G:pass
class F(G):pass

class E(F):
    def show(self):
        print("i am E")

class A(B, E):pass

運行后的結果如下

>>> a = A()
>>> a.show()
i am B

在類A中,沒有show()這個方法,于是它只能去它的父類里查找,它首先在B類中找,結果找到了,于是直接執行B類的show()方法。可見,在A的定義中,繼承參數的書寫有先后順序,寫在前面的被優先繼承。

3. 繼承順序

那如果B沒有show方法,而是D有呢?

class D:
    def show(self):
        print("i am D")

class C(D):pass
class B(C):pass


class G:pass
class F(G):pass

class E(F):
    def show(self):
        print("i am E")

class A(B, E):pass

執行結果是

>>> a = A()
>>> a.show()
i am D

由此可見,多繼承的順序使用的是從左向右再深度優先的原則。

審核編輯:符乾江

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85037
  • 繼承
    +關注

    關注

    0

    文章

    10

    瀏覽量

    2736
收藏 人收藏

    評論

    相關推薦

    使用Python實現xgboost教程

    使用Python實現XGBoost模型通常涉及以下幾個步驟:數據準備、模型訓練、模型評估和模型預測。以下是一個詳細的教程,指導你如何在Python中使用XGBoost。 1. 安裝XGBoost
    的頭像 發表于 01-19 11:21 ?396次閱讀

    使用Python進行串口通信的案例

    python復制代碼 import serialimport time # 配置串口參數serial_port = '/dev/ttyUSB0' # 在Windows上可能是 'COM3' 或其他
    的頭像 發表于 11-22 09:11 ?472次閱讀

    Python代理技術詳解:從入門到進階

    Python代理技術是一種在網絡編程中廣泛使用的技術,它允許通過代理服務器發送和接收網絡請求。
    的頭像 發表于 11-12 07:06 ?307次閱讀

    基于OpenHarmony標準系統的C++公共基礎庫案例:SafeQueue

    操作。根據繼承SafeQueueInner抽象,并對dequeue的pop方法的重寫,可以實現SafeStack和SafeQueue的相關方法。本案例主要完成如下
    的頭像 發表于 08-30 12:41 ?369次閱讀
    基于OpenHarmony標準系統的C++公共基礎<b class='flag-5'>類</b>庫案例:SafeQueue

    基于OpenHarmony標準系統的C++公共基礎庫案例:SafeStack

    操作。根據繼承SafeQueueInner抽象,并對dequeue的pop方法的重寫,可以實現SafeStack和SafeQueue的相關方法。本案例主要完成如下
    的頭像 發表于 08-30 12:41 ?385次閱讀
    基于OpenHarmony標準系統的C++公共基礎<b class='flag-5'>類</b>庫案例:SafeStack

    java子類可以繼承的什么

    Java是一種面向對象的編程語言,它支持繼承的概念。繼承是面向對象編程的三大特性之一,它允許一個(稱為子類或派生繼承另一個
    的頭像 發表于 08-20 11:02 ?1421次閱讀

    pytorch和python的關系是什么

    在當今的人工智能領域,Python已經成為了最受歡迎的編程語言之一。Python的易學易用、豐富的庫和框架以及強大的社區支持,使其成為了數據科學、機器學習和深度學習等領域的首選語言。而在深度學習領域
    的頭像 發表于 08-01 15:27 ?2339次閱讀

    Python建模算法與應用

    Python作為一種功能強大、免費、開源且面向對象的編程語言,在科學計算、數學建模、數據分析等領域展現出了卓越的性能。其簡潔的語法、對動態輸入的支持以及解釋性語言的本質,使得Python在多個平臺
    的頭像 發表于 07-24 10:41 ?659次閱讀

    Python在AI中的應用實例

    Python在人工智能(AI)領域的應用極為廣泛且深入,從基礎的數據處理、模型訓練到高級的應用部署,Python都扮演著至關重要的角色。以下將詳細探討Python在AI中的幾個關鍵應用實例,包括機器學習、深度學習、自然語言處理、
    的頭像 發表于 07-19 17:16 ?1355次閱讀

    如何實現Python復制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會看到一些用 Python 實現文件復制的特殊方法。下面我們開始學習這九種不同的方法來實現 Pyt
    的頭像 發表于 07-18 14:53 ?476次閱讀

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV-Python
    的頭像 發表于 07-16 10:38 ?1404次閱讀

    python訓練出的模型怎么調用

    Python中,訓練出的模型可以通過多種方式進行調用。 1. 模型保存與加載 在Python中,訓練好的模型需要被保存,以便在其他程序或會話中使用。以下是一些常用的模型保存和加載方法。 1.1
    的頭像 發表于 07-11 10:15 ?2261次閱讀

    用pycharm進行python爬蟲的步驟

    以下是使用PyCharm進行Python爬蟲的步驟: 安裝PyCharm和Python 首先,您需要安裝PyCharm和Python。PyCharm是一個流行的Python集成開發環境
    的頭像 發表于 07-11 10:11 ?952次閱讀

    python解析netflow數據到csv的流程詳解

    本文主要講解了linux下通過tcpdump抓取netflow數據包,并將其導入到wireshark進行解析,然后通過wireshark導出數據為json文件,再通過python腳本將其解析為csv文件以便做數據分析。
    的頭像 發表于 05-01 11:18 ?726次閱讀
    <b class='flag-5'>python</b>解析netflow數據到csv的流程<b class='flag-5'>詳解</b>

    基于Python的地圖繪制教程

    本文將介紹通過Python繪制地形圖的方法,所需第三方Python相關模塊包括 rasterio、geopandas、cartopy 等,可通過 pip 等方式安裝。
    的頭像 發表于 02-26 09:53 ?1310次閱讀
    基于<b class='flag-5'>Python</b>的地圖繪制教程
    澳门百家乐论坛| 皇冠足球投注平台| 百家乐官网庄闲分布概率| 天博百家乐官网娱乐城| 澳门百家乐群代理| 保靖县| 网上的百家乐官网怎么才能赢 | 三国百家乐官网的玩法技巧和规则| 百家乐定位胆技巧| 百家乐官网是否有规律| 安阳百家乐赌博| 超级皇冠网分布图| 汇丰百家乐官网的玩法技巧和规则 | 水晶百家乐官网筹码| 真人百家乐是真的吗| 百家乐官网投注平台| 高级百家乐出千工具| 鸿博| 利高百家乐现金网| 博之道百家乐的玩法技巧和规则| 宁安市| 太阳城百家乐作弊| 真人二八杠| 百家乐看炉子的方法| 清涧县| 真人百家乐官网作假视频| 百家乐真人游戏娱乐平台| 玩百家乐官网技巧博客| 太原百家乐招聘| 百家乐官网平台有什么优势| 网址百家乐的玩法技巧和规则| 百家乐官网扑克发牌器| 百家乐棋| 百家乐官网斗地主炸金花| 全讯网直播| 李雷雷百家乐官网的奥妙| 澳门赌场招聘网| 澳门百家乐真人娱乐城| 游戏机百家乐官网作弊| 百家乐真人游戏娱乐网| 平台百家乐官网的区别|