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

歡迎訪問 生活随笔!

生活随笔

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

python

Python多继承mro示例

發布時間:2024/9/27 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python多继承mro示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Python多繼承mro示例

以下是python方法解析順序的示例,詳細的解釋見代碼的注釋部分。

# 1 解釋python mro的執行順序,詳見數字序號的順序 class Base(object):def __init__(self): # 11. 進入 Base.__init__print("enter Base") # 12. 打印 enter Baseprint("leave Base") # 13. 打印 leave Base class A(Base):def __init__(self): # 5. 進入 A.__init__print("enter A") # 6. 打印 enter A# 7. 這里將分為兩步執行# 7.1 執行 c.__class__.mro()_# 7.2 返回 MRO 列表中的第三個元素,也就是 Bsuper(A, self).__init__()print("leave A") # 15. 打印 leave Aclass B(Base):def __init__(self): # 8. 進入 B.__init__print("enter B") # 9. 打印 enter B# 10. 這里將分為兩步執行# 10.1 執行 c.__class__.mro()_# 10.2 返回 MRO 列表中的第四個元素,也就是 Basesuper(B, self).__init__()print("leave B") # 14. 打印 leave Aclass C(A, B):def __init__(self): # 2. 實例 C ,會進入 __init__print("enter C") # 3. 打印 enter C# 4. 這里將分為兩步執行# 4.1 執行 c.__class__.mro()# 4.2 返回 MRO 列表中的第二個元素,也就是 Asuper(C, self).__init__()print("leave C") # 16. 打印 leave Ac = C() # 1. 首先代碼會從這里開始執行。 print(c.__class__.mro())""" enter C enter A enter B enter Base leave Base leave B leave A leave C [<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class '__main__.Base'>, <class 'object'>] """# 2 這里需要特殊說明,python3里的super其實是mro里的“super”,而不是按照子類的supper順序走。 class BaseClass:num_base_calls = 0def call_me(self):print("Calling method on Base Class")self.num_base_calls += 1class LeftSubclass(BaseClass):num_left_calls = 0def call_me(self):super().call_me()print("Calling method on Left Subclass")self.num_left_calls += 1class RightSubclass(BaseClass):num_right_calls = 0def call_me(self):super().call_me()print("Calling method on Right Subclass")self.num_right_calls += 1class Subclass(LeftSubclass, RightSubclass):num_sub_calls = 0def call_me(self):super().call_me()print("Calling method on Subclass")self.num_sub_calls += 1s = Subclass() s.call_me() print(s.__class__.mro())''' Calling method on Base Class Calling method on Right Subclass Calling method on Left Subclass Calling method on Subclass [<class '__main__.Subclass'>, <class '__main__.LeftSubclass'>, <class '__main__.RightSubclass'>, <class '__main__.BaseClass'>, <class 'object'>]'''

?

總結

以上是生活随笔為你收集整理的Python多继承mro示例的全部內容,希望文章能夠幫你解決所遇到的問題。

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