python面向對象學習第一周

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

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88334

(0)
daishitongdaishitong
上一篇 2017-11-13
下一篇 2017-11-13

相關推薦

  • linux文件權限

                                                      &nbsp…

    Linux干貨 2016-08-04
  • N26-第五周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep ‘^[[:space:]]\+’ /boot/grub2/grub.cfg 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; grep ‘^#[[:space:]]\+’ /etc/rc.d/rc.…

    Linux干貨 2017-03-06
  • keepalived實現高可用LVS

    前言 vrrp介紹:  vrrp(Virtual Router Redundancy Protocol)虛擬路由冗余協議;就是把多個路由器或多個網關設備加入到組中,然后在這一組中虛擬出一個路由器,此虛擬路由器有真是的IP和MAC地址,客戶端將網關指向此虛擬路由器的IP;客戶端向此虛擬路由器的IP和MAC地址發起請求時,由活動路由器負責響應;當活動路…

    Linux干貨 2015-07-23
  • 開始學習Linux的一些建議

    建議讀者范圍 有開發經驗者。 科研人員(由其Numrical)。 動手能力強的。 只是好奇,對于Linux只是淺嘗輒止的就不建議繼續往下看了。 端正學習態度 Linux不等于駭客(or Cracker)。 當然眾所周知很多“黑客工具”都是Linux平臺上的,我幫助過很多Linux小白發現他們殊途同歸都是朝著類似Aircrack-ng去的。 但他們不知道的是:…

    Linux干貨 2015-02-26
  • Linux磁盤及文件系統管理

    磁盤(Hard Disk Drive,簡稱HDD)是一種存儲介質,傳統的機械硬盤由一個或多個鋁制或玻璃制的碟片組成,碟片外覆蓋有鐵磁性材料。 磁盤的物理結構一般由磁頭與碟片、電動機、主控芯片與排線等部件組成;當主電動機帶動碟片旋轉時,副電動機帶動一組(磁頭)到相對應的碟片上并確定讀取正面還是反面的碟面,磁頭懸浮在碟面上畫出一個與碟片同心的圓形軌道(磁軌或稱柱…

    Linux干貨 2015-04-20
  • example:Disk and LVM

    1、創建一個2G的文件系統,塊大小為2048byte,預留1%可用空間,文件系統ext4,卷標為TEST,要求此分區開機后自動掛載至/test目錄,且默認有acl掛載選項。     1)創建磁盤分區 [root@localhost ~]# fdisk /dev/sdb    Device conta…

    Linux干貨 2016-08-29
欧美性久久久久