面向?qū)ο缶幊?/h1>

面向?qū)ο缶幊獭狾bject Oriented Programming,簡稱OOP茫经,是一種程序設(shè)計(jì)思想巷波。OOP把對象作為程序的基本單元,一個對象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)卸伞。
面向過程的程序設(shè)計(jì)把計(jì)算機(jī)程序視為一系列的命令集合抹镊,即一組函數(shù)的順序執(zhí)行,為了簡化程序設(shè)計(jì)瞪慧,面向過程把函數(shù)繼續(xù)切分成子函數(shù)髓考,即把大塊函數(shù)通過切割成小塊函數(shù)來降低系統(tǒng)的復(fù)雜度。
而面向?qū)ο蟮某绦蛟O(shè)計(jì)把計(jì)算機(jī)程序視為一組對象的集合弃酌,而每個對象都可以接收其他對象發(fā)過來的信息氨菇,并處理這些信息,計(jì)算機(jī)程序的執(zhí)行就是一系列消息在各個對象之間傳遞妓湘。在Python中查蓉,所有數(shù)據(jù)類型都可以視為對象,當(dāng)然也可以自定義對象榜贴。自定義的對象數(shù)據(jù)類型就是面向?qū)ο笾械念惖母拍睢?br> 我們以一個例子來說明面向過程和面向?qū)ο笤诔绦蛄鞒躺系牟煌幫阊小<僭O(shè)我們要處理學(xué)生的成績表,為了表示一個學(xué)生的成績唬党,面向過程的程序可以用一個dict表示:

std1 = {'name' : 'Cris', 'score' : 98}
std2 = {'name' : 'John', 'score' : 93}

而處理學(xué)生成績可以通過函數(shù)實(shí)現(xiàn)鹃共,比如打印學(xué)生的成績:

>>> def print_score(std):
...     print("%s : %s" % (std['name'], std['score']))

如果采用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,我們首選思考的不是程序的執(zhí)行流程驶拱,而是Student這種數(shù)據(jù)類型應(yīng)該被視為一個對象霜浴,這個對象擁有namescore兩個屬性。如果要打印一個學(xué)生的成績蓝纲,首先必須創(chuàng)建出來這個學(xué)生對應(yīng)的對象阴孟,然后晌纫,給對象發(fā)一個print_score消息,讓對象自己把自己的數(shù)據(jù)打印出來永丝。

>>> class Student(object):
...     def __init__(self, name, score):
...             self.name = name
...             self.score = score
...     def print_score(self):
...             print("%s : %s" % (self.name, self.score))
...

給對象發(fā)消息實(shí)際上就是調(diào)用對象對應(yīng)的關(guān)聯(lián)函數(shù)锹漱,我們稱之為對象的方法(Method)。面向?qū)ο蟮某绦驅(qū)懗鰜砭拖襁@樣:

>>> bart = Student('Bart Simpson', 59)
>>> lisa = Student('Lisa Simpson', 87)
>>> bart.print_score()
Bart Simpson : 59
>>> lisa.print_score()
Lisa Simpson : 87

面向?qū)ο蟮脑O(shè)計(jì)思想是從自然界中來的慕嚷,因?yàn)樵谧匀唤缰懈珉梗悾–lass)和實(shí)例(Instance)的概念是很自然的。Class是一種抽象概念喝检,比如我們定義的Class——Student砂心,是指學(xué)生這個概念,而實(shí)例(Instance)則是一個個具體的Student蛇耀,比如,Bart Simpson和Lisa Simpson是兩個具體的Student坎弯。
所以纺涤,面向?qū)ο蟮脑O(shè)計(jì)思想是抽象出Class,根據(jù)Class創(chuàng)建Instance抠忘。
面向?qū)ο蟮某橄蟪潭扔直群瘮?shù)要高撩炊,因?yàn)橐粋€Class既包含數(shù)據(jù),又包含操作數(shù)據(jù)的方法崎脉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者

  • 序言:七十年代末拧咳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子囚灼,更是在濱河造成了極大的恐慌骆膝,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灶体,死亡現(xiàn)場離奇詭異阅签,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蝎抽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門政钟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人樟结,你說我怎么就攤上這事养交。” “怎么了瓢宦?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵碎连,是天一觀的道長。 經(jīng)常有香客問我刁笙,道長破花,這世上最難降的妖魔是什么谦趣? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮座每,結(jié)果婚禮上前鹅,老公的妹妹穿的比我還像新娘。我一直安慰自己峭梳,他們只是感情好舰绘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著葱椭,像睡著了一般捂寿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孵运,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天秦陋,我揣著相機(jī)與錄音,去河邊找鬼治笨。 笑死驳概,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旷赖。 我是一名探鬼主播顺又,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼等孵!你這毒婦竟也來了稚照?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤俯萌,失蹤者是張志新(化名)和其女友劉穎果录,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咐熙,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雕憔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糖声。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斤彼。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蘸泻,靈堂內(nèi)的尸體忽然破棺而出琉苇,到底是詐尸還是另有隱情,我是刑警寧澤悦施,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布并扇,位于F島的核電站,受9級特大地震影響抡诞,放射性物質(zhì)發(fā)生泄漏穷蛹。R本人自食惡果不足惜土陪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肴熏。 院中可真熱鬧鬼雀,春花似錦、人聲如沸蛙吏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸦做。三九已至励烦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泼诱,已是汗流浹背坛掠。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留治筒,地道東北人却音。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像矢炼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子阿纤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容