欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

面向?qū)ο螅惖睦^承-創(chuàng)新互聯(lián)

面向?qū)ο?br/>一種認(rèn)識(shí)世界、分析世界的方法論。將萬事萬物抽象為類。
類class
類是抽象的概念,是萬事萬物的抽象,是一類事物的共同特征的集合。
用計(jì)算機(jī)語言來描述類,就是屬性和方法的集合。
對(duì)象instance、object
對(duì)象是類的具象,是一個(gè)實(shí)體。
對(duì)于我們每個(gè)人這個(gè)個(gè)體,都是抽象概念人類的不同的實(shí)體。

成都做網(wǎng)站、成都網(wǎng)站建設(shè),成都做網(wǎng)站公司-創(chuàng)新互聯(lián)建站已向上千多家企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。

面向?qū)ο?要素

  1. 封裝
    組裝:將數(shù)據(jù)和操作組裝到一起。
    隱藏?cái)?shù)據(jù):對(duì)外只暴露一些接口,通過接口訪問對(duì)象。比如駕駛員使用汽車,不需要了解汽車的構(gòu)造細(xì)節(jié),只需要知道使用什么部件怎么駕駛就行,踩了油門就能跑,可以不了解后面的機(jī)動(dòng)原理。
  2. 繼承
    多復(fù)用,繼承來的就不用自己寫了
    多繼承少修改,OCP(Open-closed Principle),使用繼承來改變,來體現(xiàn)個(gè)性
  3. 多態(tài)
    面向?qū)ο缶幊套铎`活的地方,動(dòng)態(tài)綁定

Python的類
定義
class ClassName:
語句塊

  1. 必須使用class關(guān)鍵字
  2. 類名必須是用大駝峰命名
  3. 類定義完成后,就產(chǎn)生了一個(gè)類對(duì)象,綁定到了標(biāo)識(shí)符ClassName上

類對(duì)象及類屬性
類對(duì)象,類的定義就會(huì)生成一個(gè)類對(duì)象
類的屬性,類定義中的變量和類中定義的方法都是類的屬性
類變量,上例中x是類MyClass的變量
MyClass中,x、foo都是類的屬性, doc 也是類的屬性
foo方法是類的屬性,如同 吃 是人類的方法,但是每一個(gè)具體的人才能吃東西,也就是說 吃 是人的實(shí)例才能調(diào)用
的方法。
foo是方法對(duì)象method,不是普通的函數(shù)對(duì)象function了,它一般要求至少有一個(gè)參數(shù)。第一個(gè)參數(shù)可以是
self(self只是個(gè)慣用標(biāo)識(shí)符,可以換名字),這個(gè)參數(shù)位置就留給了self。
self 指代當(dāng)前實(shí)例本身

實(shí)例化
a = MyClass() # 實(shí)例化
使用上面的語法,在類對(duì)象名稱后面加上一個(gè)括號(hào),就調(diào)用類的實(shí)例化方法,完成實(shí)例化。
實(shí)例化就真正創(chuàng)建一個(gè)該類的對(duì)象(實(shí)例)。
每次實(shí)例化后獲得的實(shí)例,是不同的實(shí)例,即使是使用同樣的參數(shù)實(shí)例化,也得到不一樣的對(duì)象。
Python類實(shí)例化后,會(huì)自動(dòng)調(diào)用 init 方法。這個(gè)方法第一個(gè)參數(shù)必須留給self,其它參數(shù)隨意。
init方法
MyClass()實(shí)際上調(diào)用的是 init(self) 方法,可以不定義,如果沒有定義會(huì)在實(shí)例化后隱式調(diào)用。
作用:對(duì)實(shí)例進(jìn)行初始化
class MyClass:
def init(self):
print('init')

例對(duì)象instance
類實(shí)例化后一定會(huì)獲得一個(gè)對(duì)象,就是實(shí)例對(duì)象。
上例中的tom、jerry就是Person類的實(shí)例。
init 方法的第一參數(shù) self 就是指代某一個(gè)實(shí)例。
類實(shí)例化后,得到一個(gè)實(shí)例對(duì)象,實(shí)例對(duì)象會(huì)綁定方法,調(diào)用方法時(shí)采用jerry.showage()的方式。
但是函數(shù)簽名是showage(self),少傳一個(gè)參數(shù)self嗎?
這個(gè)self就是jerry,Python會(huì)把方法的調(diào)用者作為作為第一參數(shù)self的實(shí)參傳入。
self.name就是jerry對(duì)象的name,name是保存在了jerry對(duì)象上,而不是Person類上。所以,稱為實(shí)例變量。
特殊屬性 含義
name 對(duì)象名
class 對(duì)象的類型
dict 對(duì)象的屬性的字典
qualname 類的限定名

類方法1在類定義中,使用@classmethod裝飾器修飾的方法
br/>1在類定義中,使用@classmethod裝飾器修飾的方法
4通過cls可以直接操作類的屬性
靜態(tài)方法
1在類定義中,使用@staticmethod裝飾器修飾的方法
br/>3cls這個(gè)標(biāo)識(shí)符可以是任意合法名稱,但是為了易讀,請(qǐng)不要修改
4通過cls可以直接操作類的屬性
靜態(tài)方法
1在類定義中,使用@staticmethod裝飾器修飾的方法
靜態(tài)方法,只是表明這個(gè)方法屬于這個(gè)名詞空間。函數(shù)歸在一起,方便組織管理。

類幾乎可以調(diào)用所有內(nèi)部定義的方法,但是調(diào)用 普通的方法 時(shí)會(huì)報(bào)錯(cuò),原因是第一參數(shù)必須是類的實(shí)例。
實(shí)例也幾乎可以調(diào)用所有的方法, 普通的函數(shù) 的調(diào)用一般不可能出現(xiàn),因?yàn)椴辉试S這么定義。
總結(jié):
類除了普通方法都可以調(diào)用,普通方法需要對(duì)象的實(shí)例作為第一參數(shù)。
實(shí)例可以調(diào)用所有類中定義的方法(包括類方法、靜態(tài)方法),普通方法傳入實(shí)例自身,靜態(tài)方法和類方法需要找
到實(shí)例的類。

訪問控制
私有(Private)屬性
使用雙下劃線開頭的屬性名,就是私有屬性
私有變量的本質(zhì):
類定義的時(shí)候,如果聲明一個(gè)實(shí)例變量的時(shí)候,使用雙下劃線,Python解釋器會(huì)將其改名,轉(zhuǎn)換名稱為_類名__變量名 的名稱,所以用原來的名字訪問不到了。

保護(hù)變量
在變量名前使用一個(gè)下劃線,稱為保護(hù)變量。
可以看出,這個(gè)_age屬性根本就沒有改變名稱,和普通的屬性一樣,解釋器不做任何特殊處理。
這只是開發(fā)者共同的約定,看見這種變量,就如同私有變量,不要直接使用。

私有方法的本質(zhì)
單下劃線的方法只是開發(fā)者之間的約定,解釋器不做任何改變。
雙下劃線的方法,是私有方法,解釋器會(huì)改名,改名策略和私有變量相同, _類名方法名 。方法變量都在類的dict__ 中可以找到。
私有成員的總結(jié)
在Python中使用 _單下劃線 或者 __ 雙下劃線來標(biāo)識(shí)一個(gè)成員被保護(hù)或者被私有化隱藏起來。
但是,不管使用什么樣的訪問控制,都不能真正的阻止用戶修改類的成員。Python中沒有絕對(duì)的安全的保護(hù)成員
或者私有成員。
因此,前導(dǎo)的下劃線只是一種警告或者提醒,請(qǐng)遵守這個(gè)約定。除非真有必要,不要修改或者使用保護(hù)成員或者私
有成員,更不要修改它們。

補(bǔ)丁
可以通過修改或者替換類的成員。使用者調(diào)用的方式?jīng)]有改變,但是,類提供的功能可能已經(jīng)改變了。
猴子補(bǔ)丁(Monkey Patch):
在運(yùn)行時(shí),對(duì)屬性、方法、函數(shù)等進(jìn)行動(dòng)態(tài)替換。
其目的往往是為了通過替換、修改來增強(qiáng)、擴(kuò)展原有代碼的能力。

屬性裝飾器
一般好的設(shè)計(jì)是:把實(shí)例的屬性保護(hù)起來,不讓外部直接訪問,外部使用getter讀取屬性和setter方法設(shè)置屬性

特別注意:使用property裝飾器的時(shí)候這三個(gè)方法同名
property裝飾器
后面跟的函數(shù)名就是以后的屬性名。它就是getter。這個(gè)必須有,有了它至少是只讀屬性
setter裝飾器
與屬性名同名,且接收2個(gè)參數(shù),第一個(gè)是self,第二個(gè)是將要賦值的值。有了它,屬性可寫
deleter裝飾器
可以控制是否刪除屬性。很少用
property裝飾器必須在前,setter、deleter裝飾器在后。
property裝飾器能通過簡單的方式,把對(duì)方法的操作變成對(duì)屬性的訪問,并起到了一定隱藏效果

對(duì)象的銷毀
類中可以定義 del 方法,稱為析構(gòu)函數(shù)(方法)。
作用:銷毀類的實(shí)例的時(shí)候調(diào)用,以釋放占用的資源。其中就放些清理資源的代碼,比如釋放連接。
注意這個(gè)方法不能引起對(duì)象的真正銷毀,只是對(duì)象銷毀的時(shí)候會(huì)自動(dòng)調(diào)用它。
使用del語句刪除實(shí)例,引用計(jì)數(shù)減1。當(dāng)引用計(jì)數(shù)為0時(shí),會(huì)自動(dòng)調(diào)用 del 方法。
由于Python實(shí)現(xiàn)了垃圾回收機(jī)制,不能確定對(duì)象何時(shí)執(zhí)行垃圾回收。

封裝
面向?qū)ο蟮娜刂唬庋bEncapsulation
封裝
將數(shù)據(jù)和操作組織到類中,即屬性和方法
將數(shù)據(jù)隱藏起來,給使用者提供操作(方法)。使用者通過操作就可以獲取或者修改數(shù)據(jù)。getter和setter。
通過訪問控制,暴露適當(dāng)?shù)臄?shù)據(jù)和操作給用戶,該隱藏的隱藏起來,例如保護(hù)成員或私有成員。

類的繼承
基本概念
面向?qū)ο笕刂唬^承Inheritance
人類和貓類都繼承自動(dòng)物類。
個(gè)體繼承自父母,繼承了父母的一部分特征,但也可以有自己的個(gè)性。
在面向?qū)ο蟮氖澜缰校瑥母割惱^承,就可以直接擁有父類的屬性和方法,這樣可以減少代碼、多復(fù)用。子類可以定
義自己的屬性和方法。

繼承
class Cat(Animal) 這種形式就是從父類繼承,括號(hào)中寫上繼承的類的列表。
繼承可以讓子類從父類獲取特征(屬性和方法)
父類
Animal就是Cat的父類,也稱為基類、超類。
子類
Cat就是Animal的子類,也稱為派生類。

定義
格式如下
class 子類名(基類1[,基類2,...]):
語句塊

特殊屬性和方法 含義 示例
base 類的基類
bases 類的基類元組
mro 顯示方法查找順序,基類的元組
mro()方法 同上,返回列表 int.mro()
subclasses() 類的子類列表 int.subclasses()

從父類繼承,自己沒有的,就可以到父類中找。
私有的都是不可以訪問的,但是本質(zhì)上依然是改了名稱放在這個(gè)屬性所在類或?qū)嵗?strong>dict中。知道這個(gè)新名稱
就可以直接找到這個(gè)隱藏的變量,這是個(gè)黑魔法技巧,慎用。
總結(jié)
繼承時(shí),公有的,子類和實(shí)例都可以隨意訪問;私有成員被隱藏,子類和實(shí)例不可直接訪問,但私有變量所在的類
內(nèi)的方法中可以訪問這個(gè)私有變量。
Python通過自己一套實(shí)現(xiàn),實(shí)現(xiàn)和其它語言一樣的面向?qū)ο蟮睦^承機(jī)制。
屬性查找順序
實(shí)例的dict ===》 類dict ===如果有繼承===》 父類 dict
如果搜索這些地方后沒有找到就會(huì)拋異常,先找到就立即返回了。

方法的重寫、覆蓋override
面向?qū)ο螅惖睦^承

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站標(biāo)題:面向?qū)ο螅惖睦^承-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.chinadenli.net/article44/djssee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名外貿(mào)建站全網(wǎng)營銷推廣響應(yīng)式網(wǎng)站商城網(wǎng)站網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司