欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

跟老齊學(xué)Python之類的細(xì)節(jié)

系統(tǒng) 1605 0

這幾天和幾個朋友以各種途徑討論過OOP的相關(guān)問題,他們是:令狐蟲、Frank、晉劍、小馮

大家對OOP有不同看法,所謂工程派和學(xué)院派看法不一致。從應(yīng)用的角度看,工程派的觀點是值得推薦的,那就是:不用太在意內(nèi)部是怎么工作的,只要能夠解決眼下的問題即可。但是,對于學(xué)習(xí)者而言,如果僅僅停留在工程派的層面(特別提醒,上述幾位朋友都是工程派的大俠,他們可不是簡單地能夠使用,其實是更高層次的“無招勝有招”),學(xué)習(xí)者可能感覺有點不透徹。所以,學(xué)習(xí)者,特別是初學(xué)者,要知道一些內(nèi)部原因,但是也別為了鉆研內(nèi)部原因而忘記了應(yīng)用的目的??磥韮烧邊f(xié)調(diào)還是一個難辦的事情。不用著急,隨著實踐的深入,就逐漸有體會了。

下面我根據(jù)MARK Lutz的《Learning Python》中的“大師眼中的OOP”,列一些使用OOP的常見原因。
??代碼重用。這是很簡單(并且是使用OOP的最主要原因)。通過支持繼承,類允許通過定制來編程,而不是每次都從頭開始一個項目。
??封裝。在對象接口后包裝其實現(xiàn)的細(xì)節(jié),從而隔離了代碼的修改對用戶產(chǎn)生的影響。
??結(jié)構(gòu)。類提供了一個新的本地作用域,最小化了變量名沖突。他們還提供了一種編寫和查找實現(xiàn)代碼,以及去管理對象狀態(tài)的自然場所。
??維護(hù)性。類自然而然地促進(jìn)了代碼的分解,這讓我們減少了冗余。對虧支持類的結(jié)構(gòu)以及代碼重用,這樣每次只需要修改代碼中一個拷貝就可以了。
??一致性。類和繼承可以實現(xiàn)通用的接口。這樣代碼不僅有了統(tǒng)一的外表和觀感,還簡化了代碼的調(diào)試、理解以及維護(hù)。
??多態(tài)。多態(tài)讓代碼更靈活和有了廣泛的適用性。(這似乎是OOP的屬性,不是使用它的理由)
?
不管怎么樣,類是一個非常重要的東西,看官在學(xué)習(xí)的時候,一定要多加運用。

此外,對于python2來說,還有一個叫做“新式類”(new-style)的東西,這個對應(yīng)于前面講過的類,那么前面講過的類就稱為“經(jīng)典”(classic)類。但是,對于Python3來講,沒有這種區(qū)別,二者融合。只是在Python2中,兩個是有區(qū)別的。本教程在基礎(chǔ)部分,依然不講授新式類的問題,如果看官有興趣,可以自己在GOOGLE中查找有關(guān)資料,也可以隨著本課程深入,到下一個階段來學(xué)習(xí)。

綁定和無綁定方法

看官是否還記得,在學(xué)習(xí)類的方法的時候,提到過,類的方法就是函數(shù),只不過這個函數(shù)的表現(xiàn)有點跟前面學(xué)過的函數(shù)不一樣,比如有個self。當(dāng)然,也不是必須要有的,下面看官就會看到?jīng)]有self的。既然方法和函數(shù)一樣,本質(zhì)上都是函數(shù),那么,函數(shù)那部分學(xué)習(xí)的時候已經(jīng)明確了:函數(shù)是對象,所以,類方法也是對象。正如剛才說的,類的方法中,有的可以有self,有的可以沒有。為了進(jìn)行區(qū)別,進(jìn)一步做了這樣的定義:
??無綁定類方法對象:無self
??綁定實例方法對象:有self
?
調(diào)用綁定實例方法對象

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

>>> class MyClass:
...???? def foo(self,text):
...???????? print text
...

?可以用下面的方式調(diào)用實例方法

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

>>> a = MyClass()?????? #創(chuàng)建類實例
>>> a.foo('qiwsir.github.io')?????? #調(diào)用實例方法
qiwsir.github.io
>>> a.foo
<__main__.MyClass instance at 0xb74495ac>>

?在這個實例方法調(diào)用的時候,其數(shù)據(jù)傳遞流程,在《編寫類之二方法》中有一張圖,圖中顯示了,上述的調(diào)用方法中,其實已經(jīng)將實例名稱a傳給了self,這就是調(diào)用綁定實例方法對象,有self。

上面的調(diào)用過程,還可以這樣來實現(xiàn):

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

>>> a = MyClass()
>>> x = a.foo?????? #把實例a和方法函數(shù)foo綁定在一起
>>> x
<__main__.MyClass instance at 0xb74495ac>>
>>> x("qiwsir.github.io")
qiwsir.github.io

?在上面的調(diào)用中,其實相當(dāng)于前面的調(diào)用過程的分解動作。即先將實例a和方法函數(shù)foo綁定在一起,然后賦值給x,這時候x就相當(dāng)于一個簡單函數(shù)一樣,可以通過上述方式傳入?yún)?shù)。這里將實例和方法函數(shù)綁定的方式就是運用點號運算(object.method_function)

調(diào)用無綁定類方法對象

所謂類方法對象,就是不通過實例,而是用類進(jìn)行點號運算來獲得方法函數(shù)(ClassName.method_function)

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

>>> a = MyClass()
>>> y = MyClass.foo???? #這里沒有用類調(diào)用
>>> y

?這樣的調(diào)用,就得到了無綁定方法對象,但是,調(diào)用的時候必須傳入實例做為第一參數(shù),如下

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

>>> y(a,"qiwsir.github.io")
qiwsir.github.io

?否則,就報錯。請看官特別注意報錯信息

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

>>> y("qiwsir.github.io")
Traceback (most recent call last):
? File " ", line 1, in
TypeError: unbound method foo() must be called with MyClass instance as first argument (got str instance instead)
>>>

?在編程實踐中,似乎用實例方法調(diào)用更多一下。

文檔字符串

在寫程序的時候,必須要寫必要的文字說明,沒別的原因,除非你的代碼寫的非常容易理解,特別是各種變量、函數(shù)和類等的命名任何人都能夠很容易理解,否則,文字說明是不可缺少的。

在函數(shù)、類或者文件開頭的部分寫文檔字符串說明,一般采用三重引號。這樣寫的最大好處是能夠用help()函數(shù)看。

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

"""This is python lesson"""

def start_func(arg):
??? """This is a function."""
??? pass

class MyClass:
??? """Thi is my class."""
??? def my_method(self,arg):
??????? """This is my method."""
??????? pass

?這樣的文檔是必須的。

當(dāng)然,在編程中,有不少地方要用“#”符號來做注釋。一般用這個來注釋局部。

類其實并沒有結(jié)束,不過本講座到此對類暫告一段??垂僖鄬嵺`。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一级a毛片免费观看久久精品 | 久久不卡 | 成人av观看| 国产精品1 | 国产一级大片在线观看 | 亚洲日韩中文字幕一区 | 婷婷的久久五月综合先锋影音 | 国产综合久久 | 久久一区精品 | 91视频最新网站 | 免费在线黄色电影 | 黑白禁区谭小四 | 欧美日韩视频 | 精品人妻无码一区二区三区手机板 | 亚洲欧美激情精品一区二区 | 欧美性猛交一区二区三区精品 | 欧美日韩中文在线 | 久久一精品 | 一级做a爰片久久毛片看看 欧美日韩精品国产一区二区 | 特级黄色小说 | 大学门卫老秦无删减版txt | 欧美日韩亚洲国产 | 91情侣在线偷精品国产 | 国产精品人成福利视频 | 久久综合桃花 | 国产精品毛片久久久久久久 | 污污的网站免费在线观看 | 色综合久久丁香婷婷 | saoav| 婷婷精品国产亚洲AV在线观看 | 午夜影院在线观看版 | 日韩国产成人资源精品视频 | 中文字幕日韩理论在线 | 日本视频在线 | 日本在线视频www鲁啊鲁 | 午夜特级毛片 | 在线一区免费视频播放 | 日韩国产第一页 | 久久蜜桃av一区二区天堂 | 欧美精品一二三区 | 精品国产不卡一区二区三区 |