當前位置:編程學習大全網 - 網站源碼 - python的類和對象中的super函數的問題

python的類和對象中的super函數的問題

問題壹

因為在B類中調用了super方法,所以沒有執行完B類就去執行C類的程序

super方法在多重繼承程序中的調用順序,采用的是C3算法(在python3中)。

C3算法的規則如下

①.從底層開始,選擇入邊為零的點。

②.從左到右。

③深度探索。但受限於②規則。

每壹個類都可以用mro函數查看自己的繼承順序(MRO全稱Method Resolution Order,就是用來定義繼承方法的調用順序)

對於妳的程序

分析

①規則。得到D類,去掉D類以後,入邊為零的是B類和C類

②規則。選擇B類,去掉B類後,入邊為零的只有C類。結論是D–>B–>C–>A。

在d=D()語句前加print(D.mro()),就可以打印出D類的繼承順序

[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]

問題二

python3的繼承不同於普通的繼承,super函數已經考慮到了重復繼承的問題,所以對於A類只訪問壹次

  • 上一篇:用支付寶代付做兼職被騙了怎麽辦
  • 下一篇:Excel 2007公式、函數與圖表應用(無師通)
  • copyright 2024編程學習大全網