国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python3里的super()和__class__使用介紹

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

2020-06-10 09:56依云 Python

這篇文章主要介紹了Python3里的super()和__class__使用介紹,本文用實例講解了這兩個方法之間的關系,需要的朋友可以參考下

子類里訪問父類的同名屬性,而又不想直接引用父類的名字,因為說不定什么時候會去修改它,所以數據還是只保留一份的好。其實呢,還有更好的理由不去直接引用父類的名字,參見 Python's super() considered super! | Deep Thoughts by Raymond Hettinger。

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

復制代碼 代碼如下:


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

 

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

B().m()


當然 Python 2 里 super() 是一定要參數的,所以得這么寫:

復制代碼 代碼如下:

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


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

 

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

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

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

復制代碼 代碼如下:


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()


會得到:

復制代碼 代碼如下:

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__ 名字。

 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久精品中文字幕大胸 | 免费一级欧美在线观看视频 | 婷婷激情五月 | 欧美精品福利视频 | 欧美在线综合 | 午夜视频在线网站 | 亚洲激情精品 | 日韩一二三 | 69国产精品成人96视频色 | 国产白浆在线观看 | 国产一级黄片毛片 | 一级特黄录像免费播放全99 | 成av在线 | 色二区 | 久久久国产一区 | 国产一级特黄 | 看黄色片网站 | 日本成片视频 | 久久精品国产一区二区电影 | 国产成人在线播放 | 免费午夜视频 | 做视频免费观看网站 | 久久人爱| 亚洲欧美日韩精品久久亚洲区 | 国产亲子乱弄免费视频 | 一区二区日本 | 色欧美片视频在线观看 | 欧美日韩精品免费 | 欧美一区二区三区免费 | 亚洲精品一区二区三区在线 | 国产精品香蕉在线观看 | 精品久久精品 | 中文字幕在线精品 | 一区二区在线影院 | 国产视频自拍一区 | 亚洲精品免费在线观看视频 | 欧美精品在线一区 | 99亚洲伊人久久精品影院 | 国产精品尤物 | 午夜影视免费观看 | 狠狠久 |