面向?qū)ο笤O(shè)計(jì)與面向?qū)ο缶幊痰年P(guān)系
面向?qū)ο笤O(shè)計(jì)(OOD)不會(huì)特別要求面向?qū)ο缶幊陶Z言。事實(shí)上,OOD 可以由純結(jié)構(gòu)化語言來實(shí)現(xiàn),比如 C,但如果想要構(gòu)造具備對象性質(zhì)和特點(diǎn)的數(shù)據(jù)類型,就需要在程序上作更多的努力。當(dāng)一門語言內(nèi)建 OO 特性,OO 編程開發(fā)就會(huì)更加方便高效。另一方面,一門面向?qū)ο蟮恼Z言不一定會(huì)強(qiáng)制你寫 OO 方面的程序。例如 C++可以被認(rèn)為“更好的C”;而 Java,則要求萬物皆類,此外還規(guī)定,一個(gè)源文件對應(yīng)一個(gè)類定義。然而,在 Python 中,類和 OOP 都不是日常編程所必需的。盡管它從一開始設(shè)計(jì)就是面向?qū)ο蟮模⑶医Y(jié)構(gòu)上支持 OOP,但Python 沒有限定或要求你在你的應(yīng)用中寫 OO 的代碼。OOP 是一門強(qiáng)大的工具,不管你是準(zhǔn)備進(jìn)入,學(xué)習(xí),過渡,或是轉(zhuǎn)向 OOP,都可以任意支配。考慮用 OOD 來工作的一個(gè)最重要的原因,在于它直接提供建模和解決現(xiàn)實(shí)世界問題和情形的途徑。
類
類是一種數(shù)據(jù)結(jié)構(gòu),我們可以用它來定義對象,后者把數(shù)據(jù)值和行為特性融合在一起。類是現(xiàn)實(shí)世界的抽象的實(shí)體以編程形式出現(xiàn)。實(shí)例是這些對象的具體化。可以類比一下,類是藍(lán)圖或者模型,用來產(chǎn)生真實(shí)的物體(實(shí)例)。類還可以派生出相似但有差異的子類。編程中類的概念就應(yīng)用了很多這樣的特征。在 Python 中,類聲明與函數(shù)聲明很相似,頭一行用一個(gè)相應(yīng)的關(guān)鍵字,接下來是一個(gè)作為它的定義的代碼體,如下所示:
代碼如下:
def functionName(args):
'function documentation string' #函數(shù)文檔字符串
function_suite #函數(shù)體
class ClassName(object):
'class documentation string' #類文檔字符串
class_suite #類體
二者都允許你在他們的聲明中創(chuàng)建函數(shù),閉包或者內(nèi)部函數(shù)(即函數(shù)內(nèi)的函數(shù)),還有在類中定義的方法。最大的不同在于你運(yùn)行函數(shù),而類會(huì)創(chuàng)建一個(gè)對象。類就像一個(gè) Python 容器類型。盡管類是對象(在 Python 中,一切皆對象),但正被定義時(shí),它們還不是對象的實(shí)現(xiàn)。
創(chuàng)建類
Python 類使用 class 關(guān)鍵字來創(chuàng)建。簡單的類的聲明可以是關(guān)鍵字后緊跟類名:
代碼如下:
class ClassName(bases):
'class documentation string' #'類文檔字符串'
class_suite #類體
基類是一個(gè)或多個(gè)用于繼承的父類的集合;類體由所有聲明語句,類成員定義,數(shù)據(jù)屬性和函數(shù)組成。類通常在一個(gè)模塊的頂層進(jìn)行定義,以便類實(shí)例能夠在類所定義
的源代碼文件中的任何地方被創(chuàng)建。
新聞熱點(diǎn)
疑難解答
圖片精選