Python 3 物件導向 一

2022-08-02 02:45:14 字數 2522 閱讀 7203

一、面向過程-->物件導向

面向過程:根據業務邏輯從上到下堆疊**,即先幹什麼再幹什麼,基於面向過程去設計程式就好比在設計一條流水線,是一種機械式的思維方式

函式式:將某功能**封裝到函式中,日後便無需重複編寫,僅呼叫函式即可

物件導向:對函式進行分類和封裝,讓開發」效率高更高,更快」

物件導向優點:

解決了程式的擴充套件性。對某乙個物件單獨修改,會立刻反映到整個體系中

物件導向缺點:

程式設計的複雜度遠高於面向過程,不了解物件導向而立即上手基於它設計程式,極容易出現過度設計的問題

無法向面向過程的程式設計流水線式的可以很精準的**問題的處理流程與結果,物件導向的程式一旦開始就由物件之間的互動解決問題

物件導向應用場景:需求經常變化的軟體,一般需求的變化都集中在使用者層,網際網路應用,企業內部軟體,遊戲等都是物件導向的程式設計大顯身手的好地方

物件導向程式設計是一種程式設計方式,此程式設計方式需要使用 「類」 和 「物件」 來實現,所以,物件導向程式設計其實就是對 「類」 和 「物件」 的使用。

python中一切皆為物件,且python3統一了類與型別的概念,型別就是類

類即類別、種類,是物件導向設計最重要的概念,物件是特徵與技能的結合體,而類則是一系列物件相似的特徵與技能的結合體

那麼問題來了,先有的乙個個具體存在的物件(比如乙個具體存在的人),還是先有的人類這個概念,這個問題需要分兩種情況去看,在現實世界中:先有物件,再有類

人類站在不同的角度總結出了不同的種類,如人類、動物類、植物類等概念也就說,物件是具體的存在,而類僅僅只是乙個概念,並不真實存在

在程式中:務必保證先定義類,後產生物件

這與函式的使用是類似的,先定義函式,後呼叫函式,類也是一樣的,在程式中需要先定義類,後呼叫類不一樣的是,呼叫函式會執行函式體**返回的是函式體執行的結果,而呼叫類會產生物件,返回的是物件

#

第一階段:現實中的物件----》現實中類

obj1:

特徵學校=oldboy

名字=李大炮

年齡=18性別=女

技能學習

吃飯obj2:

特徵學校=oldboy

名字=張全蛋

年齡=28性別=男

技能學習

吃飯obj3:

特徵學校=oldboy

名字=牛榴彈

年齡=18性別=女

技能學習

吃飯現實中的老男孩學生類:

相似的特徵

學校=oldboy

相似的技能

學習吃飯

第二階段:程式中的類----》程式中的物件

class

oldboystudent:

school = '

oldboy'#

類的資料屬性

def learn(self): #

類的函式屬性

print('

is learning')

defeat(self):

print('

is eating

')

#

python為類內建的特殊屬性

類名.__name__

#類的名字(字串)

類名.__doc__

#類的文件字串

類名.__base__

#類的第乙個父類(在講繼承時會講)

類名.__bases__

#類所有父類構成的元組(在講繼承時會講)

類名.__dict__

#類的字典屬性

類名.__module__

#類定義所在的模組

類名.__class__

#例項對應的類(僅新式類中)

類的特殊屬性(了解即可)

類有兩種屬性:資料屬性和函式屬性

1. 類的資料屬性是所有物件共享的

2. 類的函式屬性是繫結給物件用

print

(id(oldboystudent.school))

print

(id(s1.school))

print

(id(s2.school))

print

(id(s3.school))

'''4377347328

4377347328

'''#

類的函式屬性是繫結給物件使用的,obj.method稱為繫結方法,記憶體位址都不一樣

#ps:id是python的實現機制,並不能真實反映記憶體位址,如果有記憶體位址,還是以記憶體位址為準

print

(oldboystudent.learn)

print

(s1.learn)

print

(s2.learn)

print

(s3.learn)

'''>

>

>

'''

view code

在obj.name會先從obj自己的命名空間裡找name,找不到則去類中找,類也找不到就找父類...最後都找不到就丟擲異常

python3物件導向

類 class 描述同屬性和方法的物件的集合。方法 類中定義的函式 例項化 建立乙個類的例項,類的具體物件。物件 通過類定的資料例。包括兩個資料成員 類變數和例項變數 和方法。支援操作 屬性引用和例項化 class myclass i 12345 deff self return hello wor...

Python3 物件導向

類名 這類事物的名字,滿足大駝峰命名法,每乙個單詞的首字母大寫 屬性 這類事物具有什麼樣的特徵,身高,體重,年齡等 方法 這類事物具有什麼樣的行為,會跑,會說話,會跳等 class cat 名字貓的類,建議用大駝峰 def init self,new name,new age self.name n...

python3物件導向

類的定義 class classname name 屬性 age 18 私有屬性 deff self 方法,self 代表的是類的例項 return hello world def say self 私有方法,self 代表的是類的例項 print hello world 例項化 x classna...