1. 程式人生 > >Python 封裝,繼承,多型

Python 封裝,繼承,多型

繼承

繼承就是複製父類的內容,到子類裡面

In [1]: class Animal(object):
   ...:     def __init__(self,name):
   ...:         self.name=name
   ...:     def speak(self):
   ...:         print("animal")
   ...: 
   ...: class Cat(Animal):
   ...:     pass

In [2]: tom=Cat("tom")

In [3]: tom.name
Out[3]: 'tom'

In [4]: tom.speak()
animal

1. 私有方法和屬性,不能被子類繼承和訪問
2. 子類和各個父類中如果有相同方法,優先呼叫自己,然後向上尋找最近父類(如果父類有平行類,則按繼承順序從左至右繼承,可以用__mro__來檢視繼承順序)“覆蓋”一詞用的並不好,並沒有“覆蓋”掉,只是呼叫的順序不同。
3. 呼叫被重寫父類的方法有兩種
3.1. super().func()
3.2. name.func(self)
4. 呼叫父類同名方法的一個應用就是私有方法和屬性不會被繼承,但可以通過父類中呼叫私有方法的方法來呼叫父類的私有方法

多型

多型就是引數雖然設定為父類的型別,但仍可以傳入其子類的型別
因為python 不能宣告引數型別(動態語言),所以對多型體現的不強,而其使用的是鴨子型別(“當看到一隻鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼這隻鳥就可以被稱為鴨子。”)