午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

Python新手學(xué)習(xí)面向?qū)ο缶幊袒A(chǔ),創(chuàng)建類和實(shí)例化詳細(xì)講解

 flyk0tcfb46p9f 2019-01-03

現(xiàn)在都流行面前對(duì)象編程。文字介紹可能看得很暈,看不懂和不理解當(dāng)然看得暈,不用怕,慢慢看到最后你會(huì)有所收獲。

  1. 如果你以前沒有接觸過面向?qū)ο蟮木幊陶Z言,那你可能需要先了解一些面向?qū)ο笳Z言的一些基本特征,在頭腦里頭形成一個(gè)基本的面向?qū)ο蟮母拍?,這樣有助于你更容易的學(xué)習(xí)Python的面向?qū)ο缶幊獭?/li>
  2. 面向?qū)ο缶幊蹋∣bject Oriented Programming),簡(jiǎn)稱OOP,是一種程序設(shè)計(jì)思想。OOP把對(duì)象作為程序的基本單元,一個(gè)對(duì)象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)。
  3. Python從設(shè)計(jì)之初就已經(jīng)是一門面向?qū)ο蟮恼Z言,正因?yàn)槿绱耍赑ython中創(chuàng)建一個(gè)類和對(duì)象是很容易的。我們將詳細(xì)介紹Python的面向?qū)ο缶幊獭?/li>
  4. 在Python中,所有數(shù)據(jù)類型都可以視為對(duì)象,當(dāng)然也可以自定義對(duì)象。自定義的對(duì)象數(shù)據(jù)類型就是面向?qū)ο笾械念悾–lass)的概念。

python新手學(xué)習(xí)面向?qū)ο蠡咎卣鳎?/strong>

在Python中,定義類是通過class關(guān)鍵字,class后面緊接著是類名,即ClassName,類名通常是大寫開頭的單詞。我喜歡駝峰式寫法首字母都大寫。

定義類:

第一種類名后面直接跟冒號(hào)。

第二種類名后面跟小括號(hào)再冒號(hào)。

第三種類名后面括號(hào)中object再跟冒號(hào)。

三種的關(guān)系:第一種和第二種程序會(huì)默認(rèn)就是第三種,第一種和第二種只是簡(jiǎn)寫。如果沒有繼承自定義的類,就可以這樣寫。

如果要繼承自定義的類就不能夠簡(jiǎn)寫。(object),表示該類是從哪個(gè)類繼承下來的,繼承的概念我們后面再講,通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會(huì)繼承的類。

比如你有個(gè)類叫object1,你想繼承object1,你用簡(jiǎn)寫就直接繼承程序默認(rèn)的object。


方法:事實(shí)它就是一個(gè)函數(shù),只不過在類中定義的時(shí)候叫方法。

屬性:事實(shí)它就是一個(gè)變量,只不過在類中定義的時(shí)候叫屬性和有點(diǎn)不同。

構(gòu)造函數(shù):__init__()該方法在類實(shí)例化時(shí)會(huì)自動(dòng)調(diào)用,又叫初始化方法。

其中構(gòu)造方法有兩個(gè)參數(shù)(id 和 age),self.id和self.age就是兩個(gè)屬性。


實(shí)例化對(duì)象:

創(chuàng)建多一個(gè)方法output(),打印構(gòu)造函數(shù)的屬性。

創(chuàng)建實(shí)例:

輸出結(jié)果:

self代表類的實(shí)例,而非類

類的方法與普通的函數(shù)只有一個(gè)特別的區(qū)別:

在類地內(nèi)部,使用 def 關(guān)鍵字來定義一個(gè)方法,與一般函數(shù)定義不同,類方法必須包含參數(shù)self,且為第一個(gè)參數(shù),self代表的是類的實(shí)例。

self的名字并不是規(guī)定死的,也可以使用this,但是最好還是按照約定是用self。

self就是實(shí)例化op自身,其中self.name可以等同op.name。

以后再創(chuàng)建一個(gè)xh= ClassName('小紅',18),這個(gè)時(shí)候self就是xh。

注意點(diǎn):

注意到__init__方法的第一個(gè)參數(shù)永遠(yuǎn)是self,表示創(chuàng)建的實(shí)例本身,因此,在__init__方法內(nèi)部,就可以把各種屬性綁定到self,因?yàn)閟elf就指向創(chuàng)建的實(shí)例本身。

有了__init__方法,在創(chuàng)建實(shí)例的時(shí)候,就不能傳入空的參數(shù)了,必須傳入與__init__方法匹配的參數(shù),但self不需要傳,Python解釋器自己會(huì)把實(shí)例變量傳進(jìn)去。


類屬性與方法

類的私有屬性

__private_attrs:兩個(gè)下劃線開頭,聲明該屬性為私有,不能在類的外部被使用或直接訪問。在類內(nèi)部的方法中使用時(shí)self.__private_attrs。

類的私有方法

__private_method:兩個(gè)下劃線開頭,聲明該方法為私有方法,只能在類的內(nèi)部調(diào)用 ,不能在類地外部調(diào)用。self.__private_methods。


繼承:Python 同樣支持類的繼承,如果一種語言不支持繼承,類就沒有什么意義。

在OOP程序設(shè)計(jì)中,當(dāng)我們定義一個(gè)class的時(shí)候,可以從某個(gè)現(xiàn)有的class繼承,新的class稱為子類(Subclass),而被繼承的class稱為基類、父類或超類(Base class、Super class)。

繼承和方法重寫:

定義一個(gè)People人類,用Student學(xué)生類繼承People人類。

如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法。子類只需要寫一個(gè)跟父類相同的方法(函數(shù))就可以覆蓋重寫。

輸出結(jié)果:


總結(jié)概論:

class關(guān)鍵字后面跟類名,繼承就在小括號(hào)里面輸入需要繼承的類名。

__init__()構(gòu)造函數(shù)該方法在類實(shí)例化時(shí)會(huì)自動(dòng)調(diào)用。比如你從外面回來要進(jìn)家之前要用鑰匙開門,這個(gè)步驟就是初始化。

__del__() 析構(gòu)函數(shù),釋放對(duì)象時(shí)使用。比如你每次鎖門要出去,析構(gòu)函數(shù)默認(rèn)你鎖上門就完了。突然有一次抽風(fēng)對(duì)門說:芝麻關(guān)門。析構(gòu)函數(shù)就是程序執(zhí)行完之前要做的最后一件事。

self的名字并不是規(guī)定死的,也可以使用this,但是最好還是按照約定是用self。

子類方法和父類方法相同,子類方法會(huì)覆蓋父類方法。

繼承用個(gè)例子說:

定義一個(gè)商場(chǎng)類和一個(gè)人類,人類繼承商場(chǎng)類。

實(shí)例化對(duì)象:

輸出結(jié)果:

分析例子:

商場(chǎng)類中有兩個(gè)方法分別是買和賣。人類中只有一個(gè)go()方法。人類繼承商場(chǎng)類中兩個(gè)方法。所以后面的實(shí)例化對(duì)象中都是人類People():

xm.buy()是父類的商場(chǎng)類的方法,由于繼承的關(guān)系,所以可以直接使用。

xh.go()是人類People()中本身方法。

xh.sell()是父類的商場(chǎng)類的方法,由于繼承的關(guān)系,所以可以直接使用。

基礎(chǔ)的面向?qū)ο竽軌蛄私猓憾x類、構(gòu)造函數(shù)、方法、屬性、私有化、方法重寫、繼承這幾點(diǎn)就算入門,其實(shí)還有很多高級(jí)的用法。再python深入學(xué)習(xí)中逐漸掌握。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多