最新国产好看的视频,伊人天堂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() 很好地解決了訪問父類中的方法的問題。那么,如果要訪問父類的父類(準(zhǔn)確地說,是方法解析順序(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)知識,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(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)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下
    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),文中通過示例代碼介紹的非常詳細(xì),對大家的學(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é)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Python 類的特殊成員解析

    Python 類的特殊成員解析

    這篇文章主要介紹了Python 類的特殊成員介紹,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    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

最新評論

靖江市| 南川市| 和平县| 盐边县| 郧西县| 龙州县| 阳春市| 长沙市| 景德镇市| 梅河口市| 乐山市| 行唐县| 镇宁| 淳安县| 含山县| 益阳市| 油尖旺区| 江都市| 新郑市| 无棣县| 清丰县| 嘉善县| 班玛县| 肥西县| 千阳县| 梅河口市| 南陵县| 西林县| 科技| 孝义市| 伊川县| 信阳市| 即墨市| 两当县| 花垣县| 加查县| 甘肃省| 会东县| 宜兴市| 湟源县| 佛冈县|