久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日頭條 焦點資訊 營銷之道 企業(yè)報道 淘寶運營 網(wǎng)站建設 軟件開發(fā) 400電話
  當前位置: 首頁 » 資訊 » 網(wǎng)站建設 » 正文

Python基礎教程08:面向對象的基本概念

放大字體  縮小字體 發(fā)布日期:2018-02-18  來源:新格網(wǎng)  作者:新格網(wǎng)  瀏覽次數(shù):349  【去百度看看】
核心提示:Python使用類(class)和對象(object),進行面向對象(object-oriented programming,簡稱OOP)的編程。

Python教程 python基礎教程 Python入門 Python基本教程

怎么能快速地掌握Python?這是和朋友閑聊時談起的問題。

Python包含的內容很多,加上各種標準庫、拓展庫,亂花漸欲迷人眼。我一直希望寫一個快速的、容易上手的Python教程,而且言語簡潔,循序漸進,讓沒有背景的讀者也可以從基礎開始學習。我將在每一篇中專注于一個小的概念,希望在閑暇時可以很快讀完。

小提醒

  • 教程將專注于Python基礎,語法基于Python 2.7 (我會提醒Python 3.x中有變化的地方,以方便讀者適應3.X的情況)。測試環(huán)境為Linux。標準庫的一些包不適用于Windows平臺。如果文中的程序無法在你的平臺上運行,歡迎討論。
  • 我將專注于Python的主干,以便讀者能以最快時間對Python形成概念。
  • Linux命令行將以$開始,比如 $ls, $python
  • Python命令行將以>>>開始,比如 >>>print 'Hello World!'
  • 注釋會以#開始

建議

  • 將教程中的命令敲到Python中看看效果。
  • 看過教程之后,可以進行一些練習。
  • 參與文章評論區(qū)的討論,可以更好的積累經(jīng)驗。

教程內容

Python使用類(class)和對象(object),進行面向對象(object-oriented programming,簡稱OOP)的編程。

面向對象的最主要目的是提高程序的重復使用性。我們這么早切入面向對象編程的原因是,Python的整個概念是基于對象的。了解OOP是進一步學習Python的關鍵。

下面是對面向對象的一種理解,基于分類。

相近對象,歸為類

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

面向對象就是模擬了以上人類認知過程。在Python語言,為了聽起來酷,我們把上面說的“東西”稱為對象(object)。

先定義鳥類

class Bird(object):

    have_feather = True

    way_of_reproduction = 'egg'

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

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

summer = Bird()

print summer.way_of_reproduction

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

可憐的summer,你就是個有毛產的蛋貨,好不精致。

動作

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

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

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,無論是否用到。有關self的內容會在下一講展開)

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

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

我的summer可以跑了。

子類

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

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

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

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)建一個黃鸝對象時,該對象自動擁有鳥類的屬性。

通過繼承制度,我們可以減少程序中的重復信息和重復語句。如果我們分別定義兩個類,而不繼承自鳥類,就必須把鳥類的屬性分別輸入到雞類和黃鸝類的定義中。整個過程會變得繁瑣,因此,面向對象提高了程序的可重復使用性。

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

將各種各樣的東西分類,從而了解世界,從人類祖先開始,我們就在練習了這個認知過程,面向對象是符合人類思維習慣的。所謂面向過程,也就是執(zhí)行完一個語句再執(zhí)行下一個,更多的是機器思維。通過面向對象的編程,我們可以更方便的表達思維中的復雜想法。

總結

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

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

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

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

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

引用對象的屬性: object.attribute

完整教程可查看:Python教程

作者:Vamei  出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!

 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規(guī)舉報 ]  [ 關閉窗口 ]

 
0條 [查看全部]  相關評論

 
網(wǎng)站首頁 | 關于我們 | 聯(lián)系方式 | 使用協(xié)議 | 版權隱私 | 網(wǎng)站地圖 | 排名推廣 | 廣告服務 | 積分換禮 | 網(wǎng)站留言 | RSS訂閱 | 吉ICP備11001726號-6
企業(yè)800網(wǎng) · 提供技術支持