新聞中心
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。

嵐山網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),嵐山網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為嵐山1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的嵐山做網(wǎng)站的公司定做!
1、查找順序
(1)本地優(yōu)先,自己定義或重寫的方法優(yōu)先。本地沒有的,按照繼承列表,從左往右查找;
(2)單調(diào)性,所有子類,也要滿足查找順序。也就是說 A 繼承 B C,A 會(huì)先找 B 再找 C。但是在 A 查找之前,B 如果有多個(gè)繼承,那么它先得按查找順序查找。
2、實(shí)例
如果定義一個(gè)多繼承的類,如果不能滿足 MRO 的話,會(huì)拋出 MRO 的異常。
class A: pass class E(A): pass class F(A, E): pass >>> F() Traceback (most recent call last): File "/usr/local/python3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2862, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 7, in class F(A, E): TypeError: Cannot create a consistent method resolution order (MRO) for bases A, E # 拋出 MRO 異常,原因下面講
MRO 是可以看到的,因?yàn)轭愔写嬖谶@個(gè)屬性。
>>> A.__mro__ Out[10]: (__main__.A, object) >>> E.__mro__ Out[11]: (__main__.E, __main__.A, object) # 再定義一個(gè) G class G(E, A): pass >>> G.__mro__ Out[17]: (__main__.G, __main__.E, __main__.A, object)
以上就是python多繼承的查找順序的介紹,希望能對(duì)大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)python教程
分享文章:創(chuàng)新互聯(lián)Python教程:python多繼承的查找順序是什么?
鏈接URL:http://www.5511xx.com/article/cdigjgi.html


咨詢
建站咨詢
