2018年7月27日python面向對象中的繼承

只要跟對象有關係的前面就要加self,面向對象操作的時候

操作系統,環境,開發軟件?

函數式開發和麪向對象的開發的區別: 函數式開發在每次調用的時候都需要給參數傳參, 而面向對象的開發,可以把函數定義在類型裏面叫做方法,只需要在創建對象的時候傳一次參就可以了, 之後可以直接調用類型中的方法

面向過程的程序設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條 流水線,考慮周全什麼時候處理什麼東西。 優點是:極大的降低了寫程序的複雜度,只需要順着要執行的步驟,堆疊代碼即可。 缺點是:一套流水線或者流程就是用來解決一個問題,代碼牽一髮而動全身。

在python 中面向對象的程序設計並不是全部。 面向對象編程可以使程序的維護和擴展變得更簡單,並且可以大大提高程序開發效率 ,另外,基於面向對象的程序可 以使它人更加容易理解你的代碼邏輯,從而使團隊開發變得更從容。

如果父類的屬性子類用不完怎麼辦? 一般沒有這種情況,寫類型之前要先分析,分析出來一個類型定義一些公共的屬性爲父類, 然後其他的類在父類的基礎上如果需要添加屬性再添加 理論都是在實踐之後得出來的,所以要想明白就多練

多繼承就是可以繼承多個類型,用於解決一個對象有多個角色

查看文件的命令 import os os.listdir("f:")

命令行用的是gbk編碼

繼承中,在子類方法之中加super().父類中的方法名,子類方法執行完之後就會執行父類的方法

********************************** 1) 繼承的語法結構 繼承的語法結構:     class 類型(要繼承的類型):         pass

    當前類型:子類     要繼承的類型:父類     子類繼承父類

python中:類型的後面可以不添加括號[默認繼承了object類型]     class Pet: ==  class Pet(object): == class Pet():

python中查看自己到底繼承了哪些父類: 用魔法屬性:類型名._ _base_ _ 查看當前類型繼承的父類  S._ _base__ <class '__main__.Person'>

怎麼查看對象的當前類型:  通過類型的_ _class_ _魔法屬性,直接查看,和type(類型名稱)效果一致!  對象名._ _class_ _ == type(對象)--> 得到當前對象的所屬類型  s._ _class_ _ <class '__main__.Person'>

怎麼查看當前類型的所有子類:  通過類型的父類名._ _subclasses_ _()這個魔法函數,直接以列表的形式查看當前類型的所有子類 Person._ _subclasses_ _() [<class '__main__.Student'>, <class '__main__.S'>]

(2) 繼承的意義 >> 子類中可以編寫父類中沒有的屬性和方法     實現功能的擴展!

>> 子類中可以重寫父類中已經在的方法【方法重寫】    執行該方法的過程中,如果子類沒有重寫該方法,執行父類的方法    如果子類重寫了該方法,直接執行子類的方法,方法名相同。

>>  > 方法重載:[python沒有方法重載]在一個類型中,出現了兩個或者兩個以上    相同名稱的方法[參數不同],根據傳遞不同的參數執行不同的方法!    由於python弱類型語言的特性,已經在方法中具備了這樣的功能    python中沒有方法重載    非要給python添加一個方法重載的概念的話:@[email protected]

********************************

如果繼承了父類之後,子類需要添加自己的屬性的話,需要把父類的屬性先傳遞給子類,傳遞方法 有兩種,具體代碼如下,在父類的基礎上添加了age屬性: class Zhishen(God):     def __init__(self, name, age):         #調用父類初始化函數~初始化父類數據         # God.__init__(self, name) # 類型調用             #這兩種方法效果一樣         super(Zhishen, self).__init__(name) # 對象調用

************************************** 多繼承,一個類繼承多個父類,【多繼承-廣度優先 VS 深度優先】,檢索是深度優先: python的多繼承:體現的是 生活中 一個對象 會有多個角色的概念

如果一個類型繼承了多個類,這個類型裏面是pass,調用這個類型中的一個方法的時候,會先 尋找繼承的第一個父類中有沒有這個方法,如果有的話就直接調用第一個父類中的那個方法, 如果繼承的第一個父類中沒有那個那個方法的話就尋找第二個父類,這樣依次尋找,先深度再廣度。 lass A():     def __init__(self):         self.value = "類型AAAAAAAAAAA的value值"     def show(self):         print("類型aaaaaaaaaaaa中的show執行了")

class B(A):     pass

class C():     def __init__(self):         self.value = "類型CCCCCCCCC中的value值"     def show(self):         print("類型ccccccccccccc中的show執行了") class X(B, C):     pass

x = X() x.show() >>>>類型aaaaaaaaaaaa中的show執行了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章