01 Python面向?qū)ο笾A(chǔ)篇

1. 面向?qū)ο蟮膬蓚€(gè)特點(diǎn)

1.1. class 類

? class類, 就是對(duì)一類擁有相同屬性的對(duì)象的抽象、藍(lán)圖座硕、原型的集合

? 在類中定義了這些對(duì)象的都具備的屬性(variables(data))、共同的方法

1.2. Object 對(duì)象

? Object對(duì)象即是一個(gè)列經(jīng)過實(shí)例化后產(chǎn)生的一個(gè)實(shí)例, 一個(gè)類在沒有實(shí)例化之前是無法被使用的

2. 面向?qū)ο蟮娜筇匦?/h2>

2.1. 封裝 ( Encapsulation )

? 一個(gè)類, 在創(chuàng)建之后, 內(nèi)部的方法是無法進(jìn)行直接調(diào)用的, 是因?yàn)轭惖姆庋b特性. 類將多個(gè)函數(shù)或其他進(jìn)行封裝, 外部是無法直接對(duì)其進(jìn)行查看的, 只能通過實(shí)例化后才能進(jìn)行調(diào)用

2.2. 繼承 ( Inheritance )

? 一個(gè)類可以派生出子類蝗肪,在這個(gè)父類里定義的屬性斜友、方法自動(dòng)被子類繼承. 子類可以使用父類的方法

2.3. 多態(tài) ( Polymorphism )

? 多態(tài)是面向?qū)ο蟮闹匾匦?簡單點(diǎn)說:“一個(gè)接口朋鞍,多種實(shí)現(xiàn)”屿讽,指一個(gè)基類中派生出了不同的子類毡惜,且每個(gè)子類在繼承了同樣的方法名的同時(shí)又對(duì)父類的方法做了不同的實(shí)現(xiàn)泄鹏,這就是同一種事物表現(xiàn)出的多種形態(tài),

3. 實(shí)例化

3.1. 什么是實(shí)例化

1)把一個(gè)類變成一個(gè)具體對(duì)象的過程叫做 實(shí)例化 ( 初始化 )
2)如果沒有實(shí)例化, 使用完之后就會(huì)被程序釋放掉, 實(shí)例化后則不會(huì)被釋放

3.2. 實(shí)例化做了什么

1)類在沒有實(shí)例化調(diào)用時(shí), 就已經(jīng)被讀到內(nèi)存中了, 但是不會(huì)對(duì)類進(jìn)行語法判斷
2)實(shí)例化過程中就是會(huì)將實(shí)例化后的變量名傳入到類中 (self 就會(huì)為了接收實(shí)例化后的變量名的)
3)在類中自己創(chuàng)建的函數(shù)是不會(huì)重新復(fù)制的, 只有在引用時(shí)才會(huì)到?jīng)]有實(shí)例化的類中調(diào)取該函數(shù)
4)調(diào)取函數(shù)是, 會(huì)將 self 替換為 實(shí)例化時(shí)的變量名

3.3. 如何實(shí)例化

1)由圖中所示萨西, 類的實(shí)例化就是將一個(gè)類做一個(gè)指針摹恰, 指向一個(gè)變量昙篙,這個(gè)過程就是實(shí)例化惯殊, a 就叫做 Dog 類的實(shí)例

4. 類

4.1. 類介紹

其中:
    n = "Alex"      # 叫類變量
    self.name = name    # 叫做實(shí)例變量
    bulk骤肛,samoye  這里兩個(gè)函數(shù)纳本, 在類中叫做這個(gè)類的方法(功能,動(dòng)態(tài)屬性)


1) 其中實(shí)例變量腋颠,在不同的實(shí)例化中是無法共享的繁成,但是類變量可以。
2) 所以可以說實(shí)例變量的作用域就是實(shí)例本身
3) 實(shí)例變量又叫做靜態(tài)屬性
4) 所以 靜態(tài)屬性就是變量淑玫, 動(dòng)態(tài)屬性就是方法
5) 如果在類中有兩個(gè)變量名相同巾腕,一個(gè)是類變量面睛, 一個(gè)是實(shí)例變量, 那在調(diào)用時(shí)是先找實(shí)例變量尊搬, 如   果   實(shí)例變量中沒有才會(huì)找類變量
6)實(shí)例變量的作用: 用于描述每個(gè)實(shí)例特定的屬性的
7)類變量的作用: 用于提供所有實(shí)例的公用的屬性
8)類變量與實(shí)例變量不同叁鉴,不是每次實(shí)例化都要進(jìn)行讀取與重新賦值的,所以對(duì)于全部相同的數(shù)屬性就可以使用類變量

4.2 對(duì)已經(jīng)實(shí)例化的值進(jìn)行增刪改

所以我們是做的是:
    1)在實(shí)例化后修改實(shí)例化是的值的
    2)可以在實(shí)例化后 添加一個(gè)新值
    3)添加值是對(duì) a 實(shí)例的操作佛寿,對(duì)其他的實(shí)例沒影響
    4)也可以刪除已經(jīng)定義好的變量
    (使用 del 幌墓, 如 del a.name)

4.3. 更改類變量

1)由圖中可以看到, a.n 改變了狗准,其實(shí) 這個(gè)操作就是克锣, 在 a實(shí)例中加入了一個(gè) n="1_Alex" 的方法,通過這個(gè)來實(shí)現(xiàn)更改的效果腔长,所以對(duì) b 實(shí)例沒有影響

2)響之所以能實(shí)現(xiàn)袭祟, 是因?yàn)榻忉屍髟谧x取白能量是是從內(nèi)到為進(jìn)行讀取的, 也就是從今到遠(yuǎn)進(jìn)行讀取變量的捞附, 如果在類中和全局變量中都有N這個(gè)屬性的話就默認(rèn)調(diào)用類中的不讀取全局的巾乳, 這就是 及近原則

4.4. 直接修改 原類屬性,看 a鸟召、b的變化

1)我對(duì)類本身進(jìn)行操作胆绊,如圖中的 Dog.n = "ABC" , 那么欧募, 這種情況下压状, b 會(huì)修改, 而a 不會(huì)跟继, 因?yàn)?a的變量中就已經(jīng)有了n 不會(huì)去類中找

2)所以只要實(shí)例變量中沒有 n 的就會(huì)去類中找 n 值种冬, n 值就會(huì)發(fā)生改變

4.5. 如果 n 是一個(gè)不會(huì)自動(dòng)復(fù)制的元素哪, 如列表舔糖、元祖等

01_6.png
1)我們從右圖中發(fā)現(xiàn) Dog.n  發(fā)生了改變娱两,這是因?yàn)榱斜恚?字段, 元祖金吗,等屬性屬于不會(huì)自動(dòng)進(jìn)行復(fù)制的元素

2)實(shí)例化后實(shí)例內(nèi)部的 n  是不會(huì)自己生產(chǎn)十兢, 而是指向了 Dog.n 的內(nèi)存地址, 隨意在右圖中摇庙,b.n 與 Dog.n 實(shí)際上是一個(gè)內(nèi)存地址旱物,所以源 Dog 才會(huì)發(fā)生改變

5. 類的特殊方法

5.1. 構(gòu)造函數(shù):(init

? 作用是在實(shí)例化時(shí) , 做一些類的初始化工作, 如賦予實(shí)例變量跟匆, 實(shí)例在實(shí)例化時(shí)就開始執(zhí)行某些函數(shù)

5.2. 析構(gòu)函數(shù)(del

01_8.png
1)是在實(shí)例釋放异袄、銷毀的時(shí)候自動(dòng)執(zhí)行的,通常用于一些收尾工作玛臂,如關(guān)閉一些 數(shù)據(jù)庫鏈接烤蜕、打開的臨時(shí)文件(如右圖)。 

2)結(jié)束實(shí)例可以使用 del 方法迹冤,但是要保證只有一個(gè)變量指向了這個(gè)實(shí)例讽营, 否則實(shí)例無法釋放。 所以 del 方法刪除的是變量名而不是數(shù)據(jù)泡徙。只要數(shù)據(jù)沒有了變量名就會(huì)被python 當(dāng)做垃圾收回
  • 5.3. 私有屬性橱鹏,私有方法(體現(xiàn)了類的封裝)

01_9.png
1)私有屬性:只有類的內(nèi)部才能被調(diào)用的屬性叫做私有屬性(屬性就是變量)

2)私有方法: 只有內(nèi)部才能調(diào)用的方法叫做私有方法(方法就是類內(nèi)部的函數(shù))

3)這兩個(gè)都是在名字前面加上 "__"  雙下劃線
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市堪藐,隨后出現(xiàn)的幾起案子莉兰,更是在濱河造成了極大的恐慌,老刑警劉巖礁竞,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糖荒,死亡現(xiàn)場離奇詭異,居然都是意外死亡模捂,警方通過查閱死者的電腦和手機(jī)捶朵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狂男,“玉大人综看,你說我怎么就攤上這事♂常” “怎么了红碑?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泡垃。 經(jīng)常有香客問我析珊,道長,這世上最難降的妖魔是什么兔毙? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任唾琼,我火速辦了婚禮,結(jié)果婚禮上澎剥,老公的妹妹穿的比我還像新娘锡溯。我一直安慰自己,他們只是感情好哑姚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布祭饭。 她就那樣靜靜地躺著,像睡著了一般叙量。 火紅的嫁衣襯著肌膚如雪倡蝙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天绞佩,我揣著相機(jī)與錄音寺鸥,去河邊找鬼猪钮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胆建,可吹牛的內(nèi)容都是我干的烤低。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼笆载,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼扑馁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凉驻,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤腻要,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后涝登,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雄家,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年缀拭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咳短。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛛淋,死狀恐怖咙好,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情褐荷,我是刑警寧澤勾效,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站叛甫,受9級(jí)特大地震影響层宫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜其监,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一萌腿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抖苦,春花似錦毁菱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至究西,卻和暖如春窗慎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工遮斥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留峦失,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓伏伐,卻偏偏與公主長得像宠进,于是被迫代替她去往敵國和親晕拆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子藐翎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355