最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3里的super()和__class__使用介紹

 更新時間:2015年04月23日 09:22:15   作者:依云  
這篇文章主要介紹了Python3里的super()和__class__使用介紹,本文用實例講解了這兩個方法之間的關(guān)系,需要的朋友可以參考下

子類里訪問父類的同名屬性,而又不想直接引用父類的名字,因為說不定什么時候會去修改它,所以數(shù)據(jù)還是只保留一份的好。其實呢,還有更好的理由不去直接引用父類的名字,參見 。

這時候就該 super() 登場啦——

復(fù)制代碼 代碼如下:

class A:
  def m(self):
    print('A')

class B(A):
  def m(self):
    print('B')
    super().m()

B().m()


當(dāng)然 Python 2 里 super() 是一定要參數(shù)的,所以得這么寫:
復(fù)制代碼 代碼如下:

class B(A):
  def m(self):
    print('B')
    super(B, self).m()

需要提到自己的名字。這個名字也是動態(tài)查找的,在這種情況下替換第三方庫中的類會出問題。

super() 很好地解決了訪問父類中的方法的問題。那么,如果要訪問父類的父類(準確地說,是方法解析順序(MRO)中位于第三的類)的屬性呢?

比如,B 類是繼承 A 的,它重寫了 A 的 m 方法。現(xiàn)在我們需要一個 C 類,它需要 B 類的一些方法,但是不要 B 的 m 方法,而改用 A 的。怎么間接地引用到 A 的 m 方法呢?使用self.__class__肯定是不行的,因為 C 還可能被進一步繼承。

從文檔中我注意到,super 的實現(xiàn)是通過插入一個名為 __class__ 的名字來實現(xiàn)的(super 會從調(diào)用棧里去查找這個 __class__ 名字)。所以,就像文檔里暗示的,其實可以直接在定義方法時訪問 __class__ 名字,它總是該方法被定義的類。繼續(xù)我們的單字母類:

復(fù)制代碼 代碼如下:

class C(B):
  def m(self):
    print('C')
    # see the difference!
    print(__class__.__mro__)
    print(self.__class__.__mro__)
    __class__.__mro__[2].m(self)

class D(C):
  def m(self):
    print('D')
    super().m()

o = D()
o.m()


會得到:
復(fù)制代碼 代碼如下:

D
C
(<class 't.C'>, <class 't.B'>, <class 't.A'>, <class 'object'>)
(<class 't.D'>, <class 't.C'>, <class 't.B'>, <class 't.A'>, <class 'object'>)
A

不過,PyPy 并不支持這個 __class__ 名字。

相關(guān)文章

  • Django?ORM?事務(wù)和查詢優(yōu)化的操作方法

    Django?ORM?事務(wù)和查詢優(yōu)化的操作方法

    這篇文章主要介紹了Django?ORM?事務(wù)和查詢優(yōu)化,包括事務(wù)操作、ORM 惰性查詢及only與defer相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Pandas使用Merge與Join和Concat分別進行合并數(shù)據(jù)效率對比分析

    Pandas使用Merge與Join和Concat分別進行合并數(shù)據(jù)效率對比分析

    這篇文章主要給大家介紹了關(guān)于pandas中DataFrame數(shù)據(jù)合并連接(merge、join、concat)的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Python實現(xiàn)文件操作幫助類的示例代碼

    Python實現(xiàn)文件操作幫助類的示例代碼

    在使用Python進行業(yè)務(wù)開發(fā)的時候,需要將一些數(shù)據(jù)保存到本地文件存儲,方便后面進行數(shù)據(jù)分析展示,本文就來用Python制作一個文件操作幫助類,需要的可以參考一下
    2023-03-03
  • pandas按某2列進行分層隨機抽樣的實現(xiàn)

    pandas按某2列進行分層隨機抽樣的實現(xiàn)

    本文主要介紹了pandas按某2列進行分層隨機抽樣的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Python?中?key?參數(shù)的含義及用法小結(jié)

    Python?中?key?參數(shù)的含義及用法小結(jié)

    我們在使用?sorted()?或?map()?函數(shù)的時候,都會看到里面有一個?key?參數(shù),其實這個?key?參數(shù)也存在于其他內(nèi)置函數(shù)中(例如?min()、max()?等),那么我們今天就來了解一下?key?參數(shù)的含義以及用途吧,需要的朋友可以參考下
    2023-12-12
  • python?selenium模擬點擊問題解決方案

    python?selenium模擬點擊問題解決方案

    這篇文章主要介紹了python?selenium模擬點擊問題,涉及到安裝谷歌瀏覽器和瀏覽器驅(qū)動的相關(guān)知識介紹,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Python 類的特殊成員解析

    Python 類的特殊成員解析

    這篇文章主要介紹了Python 類的特殊成員介紹,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • 使用Python編排Dockerfile的代碼詳解

    使用Python編排Dockerfile的代碼詳解

    docker compose 是 docker 的容器編排工具,它是基于 YAML 配置,YAML 是一種配置文件格式,支持傳遞環(huán)境變量,但是對于復(fù)雜的容器編排顯得力不從心,于是我便開發(fā)這個程序,可以像寫程序一樣編排 docker,感興趣的的朋友可以參考下
    2024-08-08
  • python 解決微分方程的操作(數(shù)值解法)

    python 解決微分方程的操作(數(shù)值解法)

    這篇文章主要介紹了python 解決微分方程的操作(數(shù)值解法),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Tensorflow加載預(yù)訓(xùn)練模型和保存模型的實例

    Tensorflow加載預(yù)訓(xùn)練模型和保存模型的實例

    今天小編就為大家分享一篇Tensorflow加載預(yù)訓(xùn)練模型和保存模型的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論

白朗县| 甘南县| 突泉县| 六盘水市| 大渡口区| 洛阳市| 丹阳市| 山东| 东丰县| 手游| 武宣县| 浙江省| 塔城市| 安龙县| 巩留县| 巫溪县| 铅山县| 永泰县| 微山县| 廉江市| 乃东县| 突泉县| 定襄县| 白朗县| 阳山县| 罗定市| 玉田县| 关岭| 阿克| 武安市| 丹江口市| 乌审旗| 云和县| 定结县| 周宁县| 策勒县| 沭阳县| 兰西县| 六枝特区| 二连浩特市| 湖北省|