二 面向對象編程
1 單繼承
<1> 繼承的概念
- 現實中的繼承
在現實生活中,繼承一般指的是子女繼承父輩的財產

- 程序中的繼承

小總結:
- 在程序中,繼承描述的是多個類之間的所屬關系。
- 如果一個類A里面的屬性和方法可以復用,則可以通過繼承的方式,傳遞到類B里。
- 那么類A就是基類,也叫做父類;類B就是派生類,也叫做子類

<2> 單繼承
子類只有一個父類

小總結:
雖然子類沒有定義
__init__方法初始化屬性,也沒有定義實例方法,但是父類有。所以只要創(chuàng)建子類的對象,就默認執(zhí)行了那個繼承過來的__init__方法子類在繼承的時候,在定義類時,小括號()中為父類的名字
父類的屬性、方法,會被繼承給子類
2 多繼承
子類同時有多個父類

小總結:
- 多繼承可以繼承多個父類,也繼承了所有父類的屬性和方法
- 注意:如果多個父類中有同名的 屬性和方法,則默認使用第一個父類的屬性和方法(根據類的魔法屬性mro的順序來查找)
- 多個父類中,不重名的屬性和方法,不會有任何影響。
3 重寫方法
<1> 子類重寫父類的同名屬性和方法

<2> 子類調用父類的同名屬性和方法

<3> 使用super()調用父類方法

小總結:
子類繼承了多個父類,如果父類類名修改了,那么子類也要涉及多次修改。而且需要重復寫多次調用,顯得代碼臃腫。
使用super() 可以逐一調用所有的父類方法,并且只執(zhí)行一次。調用順序遵循 mro 類屬性的順序。
如果繼承了多個父類,且父類都有同名方法,則默認只執(zhí)行第一個父類的(同名方法只執(zhí)行一次,目前super()不支持執(zhí)行多個父類的同名方法)**
super() 在Python2.3之后才有的機制,用于通常單繼承的多層繼承。
4 多層繼承
