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 10:54
下一篇 2017-11-13 16:16

相關推薦

  • Linux終端類型

    前言     終端是一種字符型設備,它有多種類型,通常使用tty來簡稱各種類型的終端設備。而linux的終端類型有物理終端,虛擬終端,串行終端,偽終端。  1.物理終端  /dev/console     在linux系統中,計算機顯示器通常被稱為控制臺終端(console)。系統控制臺,和系統相關…

    Linux干貨 2016-10-14
  • linux同時創建多個目錄

    mkdir -p a_{c,d} b_{c,d} mkdir 同時創建多個文件夾 mkdir -p  mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sb…

    2017-08-28
  • 習題

    1、找出ifconfig命令結果中本機的所有IPv4地址 2、查出分區空間使用率的最大百分比值 3、查出用戶UID最大值的用戶名、UID及shell類型 4、查出/tmp的權限,以數字方式顯示 5、統計當前連接本機的每個遠程主機IP的連接數,并按從大到小排序 6、顯示/proc/meminfo文件中以大小s開頭的行;(要求:使用兩種方式) 7、顯示/etc/…

    Linux干貨 2016-08-07
  • Linux syslog 系統日志管理

    Linux系統上面,系統可以記錄從開機到當前系統上面何時發生了哪些事情,在centos 上表現為rsylog,由三部分組成 1)syslogd:主要記錄系統和網絡等服務的日志信息 2)klogd:主要記錄內核產生的各項信息 3)logretate:主要用來對日志文件進行切割循環記錄等 特點: 1)多線程工作 2)支持以TCP,UDP,SSL,TSL,RELP…

    Linux干貨 2016-10-24
  • N26-第四周作業

    一、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 思路:先用遞歸操作復制文件,再用chmod改變文件及其下目錄權限。 方法一: [root@promote ~]# cp -r /etc/skel /home/tuser1 #復制文件并改名 [root@promote ~]#…

    2017-05-07
  • centos啟動流程

    1、centos啟動流程 簡單流程簡介: POST –> Boot Sequence(BIOS) –> Boot Loader (MBR) –> Kernel(ramdisk) –> rootfs –> switchroot –> /sbin/init…

    Linux干貨 2016-09-09
欧美性久久久久