今天我們講述python中的類&物件導向的基本概念。
首先我們為什麼要學習物件導向,我講乙個故事,應該就可以明白了。在古時候,官府衙門如果要頒布什麼告示就會去找工匠將命令中的字都雕刻到石刻上去,然後在把石刻當模板印出文本來, 當工匠辛辛苦苦將文字都在石刻上雕刻好,突然官府又說告示上的文字顯得不夠官方,不夠威嚴,需要改動一兩處小的文字。於是工匠又只能再取乙個石刻,然後把文字修改後的告示內容往石刻上雕刻。如此反覆了幾次,終於滿足了官府衙門的要求了。
不過後來出現了活字印刷術,工匠們再也不用像以前那樣很辛苦的去刻一整塊石頭了,只是需要把每個文字都刻在乙個小石頭塊上,需要組成新的檄文時只需要把石塊的順序改一下,如果石塊上沒有這個文字,就只需要再雕刻這乙個文字就可以了,不需要全部重新開始雕刻。工匠們從此就不需要在做重複的刻字工程了,也再也不用擔心官府的隔三差五的發布告示了。
物件導向就是上面故事中的活字印刷術,一篇告示如果需要更改內容,那麼只需要更改單獨的一塊,物件導向也是這樣,只需要更改需要更改的部分就可以了,這只是物件導向的乙個優點,剩下的優點咱們後邊再總結。
1.物件導向技術簡介
物件導向程式設計-object oriented programming 簡稱為oop,是一種程式設計思想。oop把物件作為程式的基本單元,乙個物件包含了資料和運算元據的函式。
面向過程: 根據業務邏輯從上到下寫**
物件導向:將資料與函式繫結到一起,進行封裝,這樣能夠更快速的開發程式,減少了重複**的重寫過程
面向過程的程式設計把電腦程式視為一系列的命令集合,即一組函式的順序執行。為了簡化程式設計,面向過程把函式繼續切分為子函式,即把大塊函式通過切割成小塊函式來降低系統的複雜度。
面向過程程式設計最易被初學者接受,其往往用一長段**來實現指定功能,開發過程的思路是將資料與函式按照執行的邏輯順序組織在一起,資料與函式分開考慮。
面向過程的程式設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條流水線,考慮周全什麼時候處理什麼東西。
優點是:極大的降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊**即可。
缺點是:一套流水線或者流程就是用來解決乙個問題,**牽一髮而動全身。
物件導向的程式設計的核心是物件(上帝式思維),要理解物件為何物,必須把自己當成上帝,上帝眼裡世間存在的萬物皆為物件,不存在的也可以創造出來。物件導向的程式設計好比如來設計西遊記,如來要解決的問題是把經書傳給東土大唐,如來想了想解決這個問題需要四個人:唐僧,沙和尚,豬八戒,孫悟空,每個人都有各自的特徵和技能(這就是物件的概念,特徵和技能分別對應物件的屬性和方法),然而這並不好玩,於是如來又安排了一群妖魔鬼怪,為了防止師徒四人在取經路上被搞死,又安排了一群神仙保駕護航,這些都是物件。然後取經開始,師徒四人與妖魔鬼怪神仙互相纏鬥著直到最後取得真經。如來根本不會管師徒四人按照什麼流程去取。
物件導向的程式設計的
優點是:解決了程式的擴充套件性。對某乙個物件單獨修改,會立刻反映到整個體系中,如對遊戲中乙個人物引數的特徵和技能修改都很容易。
缺點:可控性差,無法向面向過程的程式設計流水線式的可以很精準的**問題的處理流程與結果,物件導向的程式一旦開始就由物件之間的互動解決問題,即便是上帝也無法**最終結果。於是我們經常看到乙個遊戲人某一引數的修改極有可能導致陰霸的技能出現,一刀砍死3個人,這個遊戲就失去平衡。
2.類的定義
類:表示某種型別集合的描述。
屬性:類本身的一些特性,如(人的)名字,身高和體重等屬性。屬性的具體值則會根據每個人的不同而不同。
方法:類所能實現的行為,吃飯,走路等。
定義:class classname[(父類名)]:
[成員函式及成員變數]
#父類名為可選引數,若定義了父類,則子類繼承父類的屬性和方法。
類例項化後,可以使用其屬性,實際上,建立乙個類,可以通過類名訪問其屬性。
3.類物件
類物件支援兩種操作:屬性引用和例項化。屬性引用使用和python中所有的屬性引用一樣的標準語法:obj.name。類物件建立後,類命名空間中所有的命名都是有效屬性名。
例項化類
很多類都傾向於將物件建立為初始狀態的。因此類可能會定義乙個名為init()的特殊方法(構造方法),init()方法可以有引數,引數通過init()傳遞到類的例項化操作上;
4.類的方法
在類的內部,使用def關鍵字可以為類定義乙個方法,與一般函式定義不同,類方法必須包含引數self,且為第乙個引數:
4.1將類賦值給變數張三
4.2 呼叫print_score()方法將』{}:{}分』列印出來
4.3檢視name引數,因為self.__name是私有變數,所以要先通過類才能呼叫。
4.4參看score引數,可以直接呼叫檢視。
以上就是我們類&物件導向的基本概念了,類和物件導向是程式設計中偏高階的用法仔細講的話就是三天三夜也很難講完,所以咱們這裡只講述一下基礎的概念,以後在慢慢講述。
物件導向中的類
世界上有很多人,每乙個人就是乙個物件,很多的人集合起來叫做人類,很多的物件集合起來就是類。把眾多的事物劃分成類是人類認識客觀世界的乙個想法,分類就是只注意與當前目標有關的本質特徵,從而找出事物的共性,最後得到乙個抽象的概念。物件導向中的類 是具有相同屬性和方法的物件的集合。比如乙個學生管理系統,裡面...
筆記Python物件導向 類與物件中的靜態方法
python類 變數 類變數 例項變數 方法 例項方法 類方法 靜態方法 建構函式 靜態方法所需要的裝飾器 staticmethod class student sum1 0 def init self,name,age self.name name self.age age def do home...
Python物件導向 類的繼承
基本概念 物件導向三要素之一,繼承inheritance 上例可以看出,通過繼承 貓類不同寫 直接繼承了父類的屬性和方法。繼承 定義格式如下 class 子類名 基類1 基類2,語句塊如果類定義時,沒有基類列表,等同於繼承自object。在python3中object類是所有物件的根基類 class...