本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88334
python面向對象學習第一周
?面向對象的思想
一個具體對象的屬性方法,都有各個來源,來源于類,比如消化類,有各種各樣的消化模式,人類的只是其中一種
另一種思想方法,類有各種屬性方法,人類有很多的屬性,一個人應該包括其中的屬性,只是值上可能有不同,不同人群也有他們的特征屬性和方法
?? ?類是對象的抽象,但是類本身也是對象, 對象是一個類的實例.
類的屬性:類變量,對象方法,類方法,靜態方法(普通方法)
類變量:
類變量是定義在類中的一個常量,它表示這個類的對象共同擁有的屬性
類變量可以為任意類型包括對象類型,類類型(一切皆對象),最好不要是自身的對象和類類型,避免遞歸
對象屬性:類的對象特有的屬性,一般在定義一個對象時需要設置它的屬性值
第一個方法初始化方法 ___init__
定義一個對象時自動調用的一個方法,一般在這里就設置對象的屬性的值, (self.shuxing = XXX) ,這個方法的調用者是這個類的對象,方法里面可以調用后面定義的方法. 對象的屬性都是靜態的值或對象,不包括方法
對象方法:
表示對象行為的方法
要用這個類的對象來調用,如果是類要額外傳入一個對象來調用,調用自身的函數時要注意遞歸, 這里面可以調用和修改屬性
類方法:
表示類對象的行為的方法
要用這個類來調用的方法 ,類的對象也可以調用(因為它可以通過對象來找到它的類)
靜態方法:
一般不表示類或對象行為, 單純計算,獲得計算的常量的值
需要使用類或者對象來調用,
定義一個前面已有的方法,會調用后面的方法,類中方法間調用,和類外調用的方法要求是一樣的,
裝飾器,私有屬性,私有方法,
裝飾器有類裝飾器和屬性裝飾器,本質都是通過函數調用實現裝飾的效果
私有屬性,方法
使用__命名的屬性和方法,外部不能正常調用得到
類的繼承
子類繼承父類,仍然可以對它里面的屬性進行修改, 它提高了代碼的復用,降低了內存
子類可以通過和父類中的方法和屬性設置相同的名字來實現對父類方法的重寫和覆蓋
重寫 方法如果修改了對象屬性,或者類變量,可能會照成其他的方法不能執行,或者正常執行
繼承之中涉及到匿名屬性和方法的繼承,對它們的進行調用和修改要考慮的情況經常非常復雜,復雜到在這里要避開討論,子類使用到了父類的匿名屬性的方法叫魔術方法,可以通過一些方法避免這種情況
多繼承,用的少,它繼承了多個類的特性,如果類中的屬性方法名全都不同,那就相當于把個類寫入了一個類中.(初始化方法的名稱是一樣的)
如果其中有重疊部分,那情況會復雜很多
調用一個方法時,會有一定的順序在父類中查找, 使用 ?類.mro()可以查看這個搜索路徑,
調用方法如果在一個類中找到了就會停止搜索,調用該方法
子類中重寫 父類方法,修改屬性與單繼承一至
面向對象的七個設計原則
原則一:(SRP:Single?responsibility?principle)單一職責原則又稱單一功能原則,類被修改的幾率很大,因此應該專注于單一的功能。如果你把多個功能放在同一個類中,功能之間就形成了關聯,
原則二:開閉原則(OCP:Open?Closed?Principle)核心思想:對擴展開放,對修改關閉。即在設計一個模塊的時候,應當使這個模
塊可以在不被修改的前提下被擴展.
原則三:里氏替換原則(LSP:Liskov?Substitution?Principle)
子類應當可以替換父類并出現在父類能夠出現的任何地方,子類要不能覆蓋父類的屬性和方法
原則四:依賴倒轉原則(DIP:Dependence?Inversion?Principle)
高層模塊不應該依賴低層模塊,兩者都應該依賴其抽象(抽象類或接口) ,抽象不應該依賴細節(具體實現),細節(具體實現)應該依賴抽象
原則五: 迪米特原則 ?迪米特原則要求盡量的封裝,盡量的獨立,盡量的使用低級別的訪問修飾符。這是封裝特性的典型體現。一個類如果暴露太多私用的方法和字段,會讓調用者很茫然。并且會給類造成不必要的判斷代碼。所以,我們使用盡量低的訪問修飾符,讓外界不知道我們的內部。這也是面向對象的基本思路。這是迪米特原則的一個特性,無法了解類更多的私有信息。
原則六: 組合/聚合復用原則 ?此原則的含義是,如果只是達到代碼復用的目的,盡量使用組合與聚合,而不是繼承。這里需要解釋一下,組合聚合只是引用其他的類的方法,而不會受引用的類的繼承而改變血統。組合聚合復用原則的潛臺詞是:我只是用你的方法,我們不一定是同類。
贊 (0)
第十周作業
上一篇
2017-11-13
ArchSummit 2017全球架構師峰會100余位國內外技術專家北京等你!
下一篇
2017-11-13