最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python基礎(chǔ)教程之面向?qū)ο蟮囊恍└拍?/h1>
 更新時間:2014年08月29日 10:26:57   作者:Vamei  
這篇文章主要介紹了python基礎(chǔ)教程之面向?qū)ο蟮囊恍└拍?面向?qū)ο笫且环N代碼組織方式,讓代碼復(fù)用最大化,需要的朋友可以參考下

Python使用類(class)和對象(object),進行面向?qū)ο螅╫bject-oriented programming,簡稱OOP)的編程。

面向?qū)ο蟮淖钪饕康氖翘岣叱绦虻闹貜?fù)使用性。我們這么早切入面向?qū)ο缶幊痰脑蚴?,Python的整個概念是基于對象的。了解OOP是進一步學(xué)習(xí)Python的關(guān)鍵。

下面是對面向?qū)ο蟮囊环N理解,基于分類。

相近對象,歸為類

在人類認知中,會根據(jù)屬性相近把東西歸類,并且給類別命名。比如說,鳥類的共同屬性是有羽毛,通過產(chǎn)卵生育后代。任何一只特別的鳥都在鳥類的原型基礎(chǔ)上的。

面向?qū)ο缶褪悄M了以上人類認知過程。在Python語言,為了聽起來酷,我們把上面說的“東西”稱為對象(object)。

先定義鳥類

復(fù)制代碼 代碼如下:

class Bird(object):
    have_feather = True
    way_of_reproduction  = 'egg'

我們定義了一個類別(class),就是鳥(Bird)。在隸屬于這個類比的語句塊中,我們定義了兩個變量,一個是有羽毛(have_feather),一個是生殖方式(way_of_reproduction),這兩個變量對應(yīng)我們剛才說的屬性(attribute)。我們暫時先不說明括號以及其中的內(nèi)容,記為問題1。

假設(shè)我養(yǎng)了一只小雞,叫summer。它是個對象,且屬于鳥類。使用前面定義的類:

復(fù)制代碼 代碼如下:

summer = Bird()
print summer.way_of_reproduction

通過第一句創(chuàng)建對象,并說明summer是類別鳥中的一個對象,summer就有了鳥的類屬性,對屬性的引用是通過 對象.屬性(object.attribute) 的形式實現(xiàn)的。

可憐的summer,你就是個有毛產(chǎn)的蛋貨,好不精致。

動作

日常認知中,我們在通過屬性識別類別的時候,有時根據(jù)這個東西能做什么事情來區(qū)分類別。比如說,鳥會移動。這樣,鳥就和房屋的類別區(qū)分開了。這些動作會帶來一定的結(jié)果,比如移動導(dǎo)致位置的變化。

這樣的一些“行為”屬性為方法(method)。Python中通過在類的內(nèi)部定義函數(shù),來說明方法。

復(fù)制代碼 代碼如下:

class Bird(object):
    have_feather = True
    way_of_reproduction = 'egg'
    def move(self, dx, dy):
        position = [0,0]
        position[0] = position[0] + dx
        position[1] = position[1] + dy
        return position

summer = Bird()
print 'after move:',summer.move(5,8)

我們重新定義了鳥這個類別。鳥新增一個方法屬性,就是表示移動的方法move。(我承認這個方法很傻,你可以在看過下一講之后定義個有趣些的方法)

(它的參數(shù)中有一個self,它是為了方便我們引用對象自身。方法的第一個參數(shù)必須是self,無論是否用到。有關(guān)self的內(nèi)容會在下一講展開)

另外兩個參數(shù),dx, dy表示在x、y兩個方向移動的距離。move方法會最終返回運算過的position。

在最后調(diào)用move方法的時候,我們只傳遞了dx和dy兩個參數(shù),不需要傳遞self參數(shù)(因為self只是為了內(nèi)部使用)。

我的summer可以跑了。

子類

類別本身還可以進一步細分成子類

比如說,鳥類可以進一步分成雞,大雁,黃鸝。

在OOP中,我們通過繼承(inheritance)來表達上述概念。

復(fù)制代碼 代碼如下:

class Chicken(Bird):
    way_of_move = 'walk'
    possible_in_KFC = True

class Oriole(Bird):
    way_of_move = 'fly'
    possible_in_KFC = False

summer = Chicken()
print summer.have_feather
print summer.move(5,8)


新定義的雞(Chicken)類的,增加了兩個屬性:移動方式(way_of_move),可能在KFC找到(possible_in_KFC)

在類定義時,括號里為了Bird。這說明,Chicken是屬于鳥類(Bird)的一個子類,即Chicken繼承自Bird。自然而然,Bird就是Chicken的父類。Chicken將享有Bird的所有屬性。盡管我只聲明了summer是雞類,它通過繼承享有了父類的屬性(無論是變量屬性have_feather還是方法屬性move)

新定義的黃鸝(Oriole)類,同樣繼承自鳥類。在創(chuàng)建一個黃鸝對象時,該對象自動擁有鳥類的屬性。

通過繼承制度,我們可以減少程序中的重復(fù)信息和重復(fù)語句。如果我們分別定義兩個類,而不繼承自鳥類,就必須把鳥類的屬性分別輸入到雞類和黃鸝類的定義中。整個過程會變得繁瑣,因此,面向?qū)ο筇岣吡顺绦虻目芍貜?fù)使用性。

(回到問題1, 括號中的object,當(dāng)括號中為object時,說明這個類沒有父類(到頭了))

將各種各樣的東西分類,從而了解世界,從人類祖先開始,我們就在練習(xí)了這個認知過程,面向?qū)ο笫欠先祟愃季S習(xí)慣的。所謂面向過程,也就是執(zhí)行完一個語句再執(zhí)行下一個,更多的是機器思維。通過面向?qū)ο蟮木幊?,我們可以更方便的表達思維中的復(fù)雜想法。

總結(jié)

將東西根據(jù)屬性歸類 ( 將object歸為class )

方法是一種屬性,表示動作

用繼承來說明父類-子類關(guān)系。子類自動具有父類的所有屬性。

self代表了根據(jù)類定義而創(chuàng)建的對象。

建立對一個對象: 對象名 = 類名()

引用對象的屬性: object.attribute

相關(guān)文章

  • Python如何輸出百分比

    Python如何輸出百分比

    這篇文章主要介紹了Python 如何輸出百分比,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Python DataFrame.groupby()聚合函數(shù),分組級運算

    Python DataFrame.groupby()聚合函數(shù),分組級運算

    python的pandas包提供的數(shù)據(jù)聚合與分組運算功能很強大,也很靈活,本文就帶領(lǐng)大家一起來了解groupby技術(shù),感興趣的朋友跟隨小編一起來看下
    2018-09-09
  • el-table 多表格彈窗嵌套數(shù)據(jù)顯示異常錯亂問題解決方案

    el-table 多表格彈窗嵌套數(shù)據(jù)顯示異常錯亂問題解決方案

    使用vue+element開發(fā)報表功能時,需要列表上某列的超鏈接按鈕彈窗展示,在彈窗的el-table列表某列中再次使用超鏈接按鈕點開彈窗,以此類推多表格彈窗嵌套,本文以彈窗兩次為例,需要的朋友可以參考下
    2023-11-11
  • python Django 反向訪問器的外鍵沖突解決

    python Django 反向訪問器的外鍵沖突解決

    這篇文章主要介紹了python Django 反向訪問器的外鍵沖突解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python腳本實現(xiàn)mp4中的音頻提取并保存在原目錄

    python腳本實現(xiàn)mp4中的音頻提取并保存在原目錄

    這篇文章主要介紹了python腳本實現(xiàn)mp4中的音頻提取并保存在原目錄,本文給大家通過實例代碼介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Python類的定義、繼承及類對象使用方法簡明教程

    Python類的定義、繼承及類對象使用方法簡明教程

    這篇文章主要介紹了Python類的定義、繼承及類對象使用方法簡明教程,本文用淺顯易懂的語言講解了類的定義、繼承及類對象的使用,非常實用易懂,需要的朋友可以參考下
    2015-05-05
  • Python超簡單容易上手的畫圖工具庫(適合新手)

    Python超簡單容易上手的畫圖工具庫(適合新手)

    這篇文章主要給大家介紹了關(guān)于Python超簡單容易上手的畫圖工具庫的相關(guān)資料,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • python遞歸函數(shù)繪制分形樹的方法

    python遞歸函數(shù)繪制分形樹的方法

    這篇文章主要為大家詳細介紹了python遞歸函數(shù)繪制分形樹的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 使用python連接Linux服務(wù)器發(fā)送指定命令的示例代碼

    使用python連接Linux服務(wù)器發(fā)送指定命令的示例代碼

    這篇文章主要介紹了使用python連接Linux服務(wù)器發(fā)送指定命令,首先安裝paramiko庫,使用paramiko庫連接linux,使用paramiko庫上傳下載文件,結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • Python 操作 PostgreSQL 數(shù)據(jù)庫示例【連接、增刪改查等】

    Python 操作 PostgreSQL 數(shù)據(jù)庫示例【連接、增刪改查等】

    這篇文章主要介紹了Python 操作 PostgreSQL 數(shù)據(jù)庫的方法,結(jié)合實例形式分析了Python 連接PostgreSQL及增刪改查等相關(guān)操作技巧,需要的朋友可以參考下
    2020-04-04

最新評論

加查县| 景谷| 庆云县| 南陵县| 金华市| 大竹县| 安多县| 济源市| 攀枝花市| 姚安县| 晋州市| 博湖县| 钦州市| 开鲁县| 射阳县| 淮北市| 原平市| 泰和县| 萝北县| 清河县| 德州市| 万全县| 沾化县| 左权县| 莱芜市| 佛学| 河曲县| 屯昌县| 八宿县| 白河县| 贵定县| 绍兴县| 来凤县| 石首市| 都安| 青州市| 南乐县| 明水县| 调兵山市| 平阴县| 长沙县|