Python 封裝,繼承,多型
阿新 • • 發佈:2019-02-06
繼承
繼承就是複製父類的內容,到子類裡面
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 不能宣告引數型別(動態語言),所以對多型體現的不強,而其使用的是鴨子型別(“當看到一隻鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼這隻鳥就可以被稱為鴨子。”)