日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

对于python 3.x与python2.x中新型类的继承特性总结

發布時間:2025/7/14 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对于python 3.x与python2.x中新型类的继承特性总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)一般性繼承特性

""" 該文件對于python 3.x 及python 2.x的New-style 類的一般性繼承特性進行了說明和測試。 (1)實例的繼承特性:搜尋實例,類,超類: a.搜尋該實例的__class__(即該實例的類)的__mro__中的所有類的__dict__ b.如果在步驟a中,第一個找到的是相應的數據描述符,則調用并退出(找到后僅判斷是否為描述符,不再繼續往后找) c.否則,如果不是數據描述符,返回實例的__dict__中的值 d.否則,實例__dict__沒有,調用在a中找到的非數據描述符,或者返回在a中找到的值 (2)類的繼承特性:搜尋類,超類,元類: a.搜尋該類的__class__(即該類的元類)的__mro__中所有元類的__dict__ b.如果在步驟a中,第一個找到的相應的數據描述符,則調用并退出(找到后僅判斷是否為描述符,不再繼續往后找) c.否則,如果不是數據描述符,調用或返回在該類自己的__mro__中所有類的__dict__中的第一個找到的描述符或值 d.否則,調用在a中找到的非數據描述符,或者返回在a中找到的值對于賦值繼承,實例繼承從上述a到c,不過b步驟改為__set__方法,c步驟為在繼承里存儲 類繼承與一般性繼承特性一致,只有c步驟改為停止,儲存 """ class desc: #數據描述符def __get__(self,instance,owner):return ('datadesc getting!')def __set__(self,instance,value):print ('datadesc setting!',value) class Nondatadesc: #非數據描述符def __get__(self,instance,owner):return ('Nondatadesc getting') class a(type):data1=desc() #類繼承,第一個找到數據描述符data2='only located in metaclass a' #類繼承,因為第一個找到的是該處,而該處又非數據描述符,而該類基類__dict__中又無,故返回該值data10=Nondatadesc() #類繼承,找到非數據描述符,同上,最終返回該值data11=Nondatadesc() #類繼承,第一個找到該處,但非數據描述符,在step c中,找到data11,故此處被截斷 class b:data1='b1' #類繼承,其值被描述符截斷data3=desc() #類繼承,超類中找到的值def __init__(self):self.data8='cannot be found' #實例繼承找不到該值,因為不在實例類的超類的__dict__中 data5='b5' #實例繼承,被前面的d中的描述符截斷data7='found in superclass b' #實例繼承,返回僅能在b中找到的值 data6=desc() #實例繼承,于其類的超類中找到的數據描述符 data9='being intercepted by a.data9' #實例繼承,a中無描述符 data11='Fetched before data11 in class a' #類繼承,step c 返回該值,截斷元類data12=Nondatadesc() #實例繼承中,最終返回非數據描述符 class d:data1='d1'data6='being found prior to b,so interceptting b"s desc' #實例繼承中,第一次找到,但不是desc,進入step c,實例中沒有data6,故最終返回該值data5=desc() #實例繼承中,第一次找到的data5是描述符data3='First meet d,so interceptting b"s desc' #類繼承中,第一次找到的daa3,不是 class c(d,b,metaclass=a):data1='c1' #類繼承中,其值被描述符截斷data4='located in class c' #實例繼承,于其類中找到值def __init__(self):self.data9='instance dict' #實例繼承步驟c中找到該值# self.data5='instance data5'print('Test Starting'.center(50,'-')) import sys print('sys.verson=',sys.version) print('實例繼承測試'.center(50,'*')) x=c() print('x.data5',x.data5) print('x.data9',x.data9) print('x.data7',x.data7) print('x.data6',x.data6) print('x.data12',x.data12) x.data5=1 #觸發__set__方法 x.data9=2 # print('set x.data5=1->',x.data5) # x.data9=2 # print('set x.data9=2->',x.data9) try:x.data8 except AttributeError:print('impossible fetch') print('實例搜索路徑'.center(50,'*')) for cls in x.__class__.__mro__:for attr in cls.__dict__:if not attr.startswith('__'):print('class %s--> attr %s'%(cls.__name__,attr)) print('類繼承測試'.center(50,'*')) print('c.data1',c.data1) print('c.data3',c.data3) print('c.data2',c.data2) print('c.data10',c.data10) print('c.data11',c.data11) c.data1=1 #觸發__set__方法 c.data3=3

運行后:

------------------Test Starting------------------- sys.verson= 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] **********************實例繼承測試********************** x.data5 datadesc getting! x.data9 instance dict x.data7 found in superclass b x.data6 being found prior to b,so interceptting b"s desc x.data12 Nondatadesc getting datadesc setting! 1 impossible fetch **********************實例搜索路徑********************** class c--> attr data1 class c--> attr data4 class d--> attr data1 class d--> attr data6 class d--> attr data5 class d--> attr data3 class b--> attr data1 class b--> attr data3 class b--> attr data5 class b--> attr data7 class b--> attr data6 class b--> attr data9 class b--> attr data11 class b--> attr data12 **********************類繼承測試*********************** c.data1 datadesc getting! c.data3 First meet d,so interceptting b"s desc c.data2 only located in metaclass a c.data10 Nondatadesc getting c.data11 Fetched before data11 in class a datadesc setting! 1

(2)built-ins特殊情況

""" builtin 的繼承特性: (1)對于實例繼承:若是顯式調用,則首先搜索實例,否則搜索該實例的類,否則搜索實例類的超類; 若是隱式調用,則跳過實例,首先搜索該實例的類,否則搜索該實例類的超類。 (2)對于類繼承:若是顯示調用,則首先搜索該類,否則搜索該類的超類; 若是隱式調用,則跳過該類,首先搜索該類的元類(metaclass),否則搜索該元類的超類。 注意到2點:一是實例和類的共同點,即對于顯示調用,都是從自身層搜索,然后搜索自身的繼承層(實例繼承層是類, 類繼承層是超類;而隱式調用首先從自身的創建層(實例創建層是類,類創建層是元類),否則再搜索創建層的繼承層。 """ class a(type):def __str__(self):return 'a' class b(type):pass class c(a):def __str__(self):return 'c' class d(metaclass=a):pass class e(metaclass=a):def __str__(self):return 'e' class f(metaclass=b):def __str__(self):return 'f' class g(c):pass class h(d,e,metaclass=g):pass print('實例顯式繼承'.center(50,'*')) x=h() print('x.__str__:=>',x.__str__()) #實例無_str__,類無,超類d無,超類e有,返回'e' x.__str__=lambda :'lambda' print('Having set instance x"s __str__') print('x.__str__:=>',x.__str__()) #實例有__str__ print('實例隱式繼承'.center(50,'*')) print('str(x)',str(x)) #從類開始搜索,然后搜類的超類,找到e print('類顯式繼承'.center(50,'*')) print('h.__str__(h)',h.__str__(h)) #從類開始搜索,然后搜索類的超類,找到e print('類隱式繼承'.center(50,'*')) print('str(h)',str(h)) #從元類搜索,然后搜索元類的超類,找到c **********************實例顯式繼承********************** x.__str__:=> e Having set instance x"s __str__ x.__str__:=> lambda **********************實例隱式繼承********************** str(x) e **********************類顯式繼承*********************** h.__str__(h) e **********************類隱式繼承*********************** str(h) c [Finished in 0.1s]

?

?

轉載于:https://www.cnblogs.com/johnyang/p/10569063.html

總結

以上是生活随笔為你收集整理的对于python 3.x与python2.x中新型类的继承特性总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色小视频在线 | 天天天天射 | 亚洲自拍偷拍第一页 | 亚洲色图15p | 激情综合婷婷 | 欧美成人性生活片 | 二区三区免费 | 婚后打屁股高h1v1调教 | 日韩网红少妇无码视频香港 | 色婷婷av一区二区三区麻豆综合 | 五月天久久久 | 尤果网福利视频在线观看 | 老牛嫩草二区三区观影体验 | 中文字幕免费一区 | 国产喷水吹潮视频www | www.youji.com| 九九色九九 | 丁香伊人网 | 国产精品亚洲αv天堂无码 伊人性视频 | 麻豆久久久9性大片 | 国产成人精品亚洲精品色欲 | 欧美福利视频在线 | jizz精品| 中文字幕一二三 | 狠狠一区二区 | 久久久久国产一区二区三区潘金莲 | 麻豆区1免费 | 亚洲午夜一区二区三区 | 成年人视频在线免费观看 | 在线观看91av| 色老二导航 | 日本h片在线观看 | xxxxx黄色| 亚洲欧美日韩偷拍 | 一区二区三区久久久久 | 成人激情社区 | 扒开jk护士狂揉免费 | 在线观看jizz | 欧美综合一区二区三区 | 久久er99热精品一区二区介绍 | 无码精品一区二区三区AV | 精品自拍视频 | 亚洲免费黄色网 | a资源在线| 丰满人妻一区二区三区53 | 午夜在线视频免费 | 91视频黄色 | 欧美熟女一区二区 | 黄色同人网站 | 久久久久久久国产精品毛片 | 男女深夜福利 | 啪啪天堂| 玖玖爱精品 | 国产xx在线观看 | 久久免费看视频 | 久久久久久97 | 三级国产三级在线 | 国产福利三区 | 精品日韩欧美 | 91高清视频| 中文字幕色片 | 毛片9 | 天堂俺去俺来也www 欧美大片在线播放 | 久操视频精品 | 久久精品国产亚洲av麻豆色欲 | 丰满人妻一区二区三区大胸 | 欧美日韩亚洲国产 | 久久久久久伊人 | 伦理片一区二区三区 | www欧美在线 | 亚洲精品美女视频 | 日本人的性生活视频 | 国产精品久久亚洲 | 国产精品18久久久 | 美攻壮受大胸奶汁(高h) | 成人片黄网站久久久免费 | 东京久久 | 自拍偷拍三级 | 久久久久亚洲av成人人电影 | 超碰免费公开 | 一级福利片 | 小嫩女直喷白浆 | 无码一区二区精品 | 嫩草国产| 婷婷亚洲精品 | 亚洲无码精品免费 | 婷婷国产在线 | 亚洲激情电影在线 | 在线观看的黄网 | 国产一区二区视频免费观看 | 无码人妻aⅴ一区二区三区玉蒲团 | 涩涩涩涩av | 国产极品999 | 日本少妇b | 人妻视频一区二区三区 | 国产又粗又猛又爽又黄的视频小说 | 午夜男人的天堂 | 夜夜爽影院 | www久久久|