物件的進化
物件導向(object oriented programming,oop)程式設計的思想主要是針對大型軟體設計而來的。物件導向程式設計使程式的擴充套件性更強、可讀性更好,使的程式設計可以像搭積木一樣簡單。
物件導向程式設計將資料和運算元據相關的方法封裝到物件中,組織**和資料的方式更加接近人的思維,從而大大提高了程式設計的效率。
python 完全採用了物件導向的思想,是真正物件導向的程式語言,完全支援物件導向的基本功能,例如:繼承、多型、封裝等。
python 中,一切皆物件。資料型別、函式、類等,都是物件。
注:python 支援面向過程、物件導向、函式式程式設計等多種程式設計正規化。
面向過程程式設計更加關注的是「程式的邏輯流程」,是一種「執行者」思維,適合編寫小規模的程式。
面向過程思想思考問題時,我們首先思考「怎麼按步驟實現?」並將步驟對應成方法, 一步一步,最終完成。 這個適合簡單任務,不需要過多協作的情況下。比如,如何開車?我們很容易就列出實現步驟:
發動車掛擋
踩油門走你
面向過程適合簡單、不需要協作的事務。 但是當我們思考比較複雜的問題,比如「如 何造車?」,就會發現列出 1234 這樣的步驟,是不可能的。那是因為,造車太複雜,需要 很多協作才能完成。此時物件導向思想就應運而生了。
物件導向更加關注的是「軟體中物件之間的關係」,是一種「設計者」思維,適合編寫 大規模的程式。
物件導向(object)思想更契合人的思維模式。我們首先思考的是「怎麼設計這個事物?」 比如思考造車,我們就會先思考「車怎麼設計?」,而不是「怎麼按步驟造車的問題」。這 就是思維方式的轉變。
物件導向方式思考造車,發現車由如下物件組成:
輪胎發動機
車殼座椅
擋風玻璃
為了便於協作,我們找輪胎廠完成製造輪胎的步驟,發動機廠完成製造發動機的步驟; 這樣,發現大家可以同時進行車的製造,最終進行組裝,大大提高了效率。但是,具體到輪 胎廠的乙個流水線操作,仍然是有步驟的,還是離不開面向過程思想!
因此,物件導向可以幫助我們從巨集觀上把握、從整體上分析整個系統。 但是,具體到 實現部分的微觀操作(就是乙個個方法),仍然需要面向過程的思路去處理。
我們千萬不要把面向過程和物件導向對立起來。他們是相輔相成的。物件導向離不開面 向過程!
遇到複雜問題,先從問題中找名詞(面向過程更多的是找動詞),然後確立這些名詞哪 些可以作為類,再根據問題需求確定的類的屬性和方法,確定類之間的關係。
都是解決問題的思維方式,都是**組織的方式。
解決簡單問題可以使用面向過程
解決複雜問題:巨集觀上使用物件導向把握,微觀處理上仍然是面向過程。
隨著程式設計面臨的問題越來越複雜,程式語言本身也在進化,從主要處理簡單資料開始, 隨著資料變多進化「陣列」; 資料型別變複雜,進化出了「結構體」; 處理資料的方式和邏輯變複雜,進化出了「物件」。
簡單資料
像 30,40,50.4 等這些數字,可以看做是簡單資料。最初的計算機程式設計,都是像這樣 的數字。
陣列將同型別的資料放到一起。比如:整數陣列[20,30,40],浮點數陣列[10.2, 11.3, 12.4], 字串陣列:[「aa」,」bb」,」cc」]
結構體將不同型別的資料放到一起,是 c 語言中的資料結構。比如:
物件將不同型別的資料、方法(即函式)放到一起,就是物件。比如:
class
student
: school =
"nwu"
#類屬性
count =
0#類屬性
def__init__
(self, name, score)
: self.name = name #例項屬性
self.score = score #例項屬性
student.count = student.count +
1def
say_score
(self)
:#例項方法
print
("我的學校是:"
, student.school)
print
("我的分數是:"
, self.score)
python中的數字也是物件。比如:整數 9,就是乙個包含了加法、乘法等方法的物件。 python 物件導向 python是物件導向嗎
python是一種物件導向 解釋型計算機程式語言,由guido van rossum於1989年底發明,第乙個公開發行版發行於1991年,python 源 同樣遵循 gpl gnu general public license 協議。python語法簡潔而清晰,具有豐富和強大的類庫。但實際上面向過程...
Python基礎 16物件導向概述
1 在版本2.2 中,python社群最終統一了型別 type 和類 class 新式類具備更多高階的oop特性,扮演了乙個經典類 舊式類 超集的角色,後者是python 誕生時所創造的類物件。2 下面的示例展示了如何建立乙個類 class mynewobjecttype bases define ...
python 16 初識物件導向
面向過程 一切以事物的發展流程為核心 優點 負責的問題流程化,編寫相對簡單 缺點 可擴充套件性差 物件導向 一切以物件為中心.一切皆為物件.具體的某乙個事務就是物件 優點 可擴充套件性強 缺點 程式設計的複雜度高於面向過程 類 就是圖紙,建立物件的第一步 物件 通過類造出來的具體事物,基本格式 cl...