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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python3的方法解析顺序(MRO)

發(fā)布時(shí)間:2023/12/10 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3的方法解析顺序(MRO) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Python 2.3 的新式類的?C3 算法。它也是 Python 3 唯一支持的方式(筆者使用python3,所以就先講這種的)

一個(gè)例子:

class D(object):

????pass

?

class E(object):

????pass

?

class F(object):

????pass

?

class C(D, F):

????pass

?

class B(E, D):

????pass

?

class A(B, C):

????pass

?

if __name__ == '__main__':

????print A.__mro__

如下圖:

?

那么模擬一下例子的拓?fù)渑判?#xff1a;首先找入度為0的點(diǎn),只有一個(gè)A,把A拿出來,把A相關(guān)的邊剪掉,再找下一個(gè)入度為0的點(diǎn),有兩個(gè)點(diǎn)(B,C),取最左原則,拿B,這是排序是AB,然后剪B相關(guān)的邊,這時(shí)候入度為0的點(diǎn)有E和C,取最左。這時(shí)候排序?yàn)锳BE,接著剪E相關(guān)的邊,這時(shí)只有一個(gè)點(diǎn)入度為0,那就是C,取C,順序?yàn)锳BEC。剪C的邊得到兩個(gè)入度為0的點(diǎn)(DF),取最左D,順序?yàn)锳BECD,然后剪D相關(guān)的邊,那么下一個(gè)入度為0的就是F,然后是object。那么最后的排序就為ABECDFobject

那么我們輸出上面的程序:

(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.E'>, <class '__main__.C'>, <class '__main__.D'>, <class '__main__.F'>, <type 'object'>)

?

參考:

? ? ? ?http://python.jobbole.com/85685/            點(diǎn)贊啊
  https://hanjianwei.com/2013/07/25/python-mro/

  https://blog.csdn.net/weixin_35653315/article/details/78107466

總結(jié)

以上是生活随笔為你收集整理的Python3的方法解析顺序(MRO)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。