物件導向初識

2022-04-08 23:58:04 字數 4279 閱讀 9223

一, **物件導向

1.面向過程的程式設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向

過程的設計就好比精心設計好一條流水線,考慮周全什麼時候處理什麼東西。

優點是:極大的降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊**即可。

缺點是:一套流水線或者流程就是用來解決乙個問題,**牽一髮而動全身。

2. 物件導向的程式設計的核心是物件(上帝式思維),要理解物件為何物,必須把自己

當成上帝,上帝眼裡世間存在的萬物皆為物件,不存在的也可以創造出來。物件導向

的程式設計好比如來設計西遊記,如來要解決的問題是把經書傳給東土大唐,如來想

了想解決這個問題需要四個人:唐僧,沙和尚,豬八戒,孫悟空,每個人都有各自的

特徵和技能(這就是物件的概念,特徵和技能分別對應物件的屬性和方法),然而這

並不好玩,於是如來又安排了一群妖魔鬼怪,為了防止師徒四人在取經路上被搞死,

又安排了一群神仙保駕護航,這些都是物件。然後取經開始,師徒四人與妖魔鬼怪神

仙互相纏鬥著直到最後取得真經。如來根本不會管師徒四人按照什麼流程去取。

3. 物件導向的程式設計:

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

如對遊戲中乙個人物引數的特徵和技能修改都很容易。

缺點:可控性差,無法向面向過程的程式設計流水線式的可以很精準的**問題的處

理流程與結果,物件導向的程式一旦開始就由物件之間的互動解決問題,即便是上帝

也無法**最終結果。於是我們經常看到乙個遊戲人物某一引數的修改極有可能導致陰

霸的技能出現,一刀砍死3個人,這個遊戲就失去平衡。

4. 物件導向程式設計可以使程式的維護和擴充套件變得更簡單,並且可以大大提高程式開發效率,

另外,基於物件導向的程式可以使它人更加容易理解你的**邏輯,從而使團隊開發變

得更從容。

了解一些名詞:類、物件、例項、例項化

類:具有相同特徵的一類事物(人、狗、老虎)

物件/例項:具體的某乙個事物(隔壁阿花、樓下旺財)

例項化:類——>物件的過程

二, 類的相關知識

1. 宣告

def

functionname(args):

'函式文件字串

'函式體

'''class 類名:

'類的文件字串'

類體'''#

我們建立乙個類

class

data:

pass

2. 屬性

class person:   #

定義乙個人的類

role = '

person'#

人的角色屬性都是人

def walk(self): #

人都可以走路,也就是有乙個走路方法

print("

person is walking...")

print(person.role) #

檢視人的role屬性

print(person.walk) #

引用人的走路方法,注意,這裡不是在呼叫

3. 例項化:類名加括號就是例項化,會自動觸發__init__函式的執行,可以用它來為每個實

例定製自己的特徵

class person:   #

定義乙個人類

role = '

person'#

人的角色屬性都是人

def__init__

(self,name):

self.name = name #

每乙個角色都有自己的暱稱;

def walk(self): #

人都可以走路,也就是有乙個走路方法

print("

person is walking...")

print(person.role) #

檢視人的role屬性

print(person.walk) #

引用人的走路方法,注意,這裡不是在呼叫

4. 例項化的過程就是類——>物件的過程

原本我們只有乙個person類,在這個過程中,產生了乙個egg物件,有自己具體的名字,

攻擊力和生命值。

語法:物件名 = 類名(引數)

self

起個別的名字,但是正常人都不會這麼做,因為你瞎改別人就不認識.

5. 類屬性的補充

一:我們定義的類的屬性到底存到**了?有兩種方式檢視

dir(類名):查出的是乙個名字列表

類名.__dict__

:查出的是乙個字典,key為屬性名,value為屬性值

二:特殊的類屬性

類名.__name__

#類的名字(字串)

類名.__doc__

#類的文件字串

類名.__base__

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

類名.__bases__

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

類名.__dict__

#類的字典屬性

類名.__module__

#類定義所在的模組

類名.__class__

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

三, 物件的相關知識

class

類名:

def__init__

(self,引數1,引數2):#只要例項化乙個物件,就會自動執行該方法

self.物件的屬性1 =引數1  #相當於給物件空間/位址增加乙個屬性

self.物件的屬性2 =引數2

def 方法名(self):pass

def 方法名2(self):pass

物件名 = 類名(1,2) #

物件就是例項,代表乙個具體的東西

# 1.

類名() : 類名+括號就是例項化乙個物件空間/例項/物件,

# 2.自動執行__init__方法,將物件的空間位址傳給 self

#

括號裡傳引數,其他與init中的形參一一對應

# 3.

給物件封裝屬性

物件名.物件的屬性 #

檢視物件的屬性,直接用 物件名.屬性名 即可

物件名.方法名() #

呼叫類中的方法,直接用 物件名.方法名() 即可

class

lian:

liupai='

四一分推

'jinggongxing='穩健'

tuanzuoyong='

抗切保'

def__init__

(self,name,jineng,shuxing):

self.name=name

self.jineng=jineng

self.shuxing=shuxing

print('壓制'

)

defgongneng(self):

print('抗壓'

)

#從類名的角度操作類中的靜態變數

lian.routan='控制'

#增lian.tuanzuoyong='

抗切控'#改

del lian.routan #

刪print(lian.__dict__) #

查(檢視類中所有資訊)

print(lian.__dict__['

liupai

']) #

檢視類中某一屬性資訊

#從類名的角度操作類中的方法(除特殊方法外基本不用)

lian.gongneng('大樹'

)

#從物件的角度

tel=lian('

諾克','

斷頭台','

戰士') #

生成物件

tel.zhuangbei='黑切'

#增tel.zhuangbei='

黑切,三項'#

改print(tel.__dict__) #

查print(tel.shuxing) #

查某一屬性

#(注意:也可以刪除,本段函式並未展示)

print(tel.gongneng())

物件導向 初識物件導向

面向過程思想 步驟清晰簡單,第一步做什麼,第二步做什麼.面向過程適合處理一些較為簡單的問題 物件導向思想 物以類聚,分類的思維模式,思考問題首先會解決問題需要分哪些類,然後對這些類進行單獨思考,最後才是對某個分類下的細節進行面向過程的思索 物件導向適合處理複雜的問題,適合處理需要多人協作的問題 對於...

初識物件導向

1.例項化 2.init 方法 3.類方法和靜態方法 4.訪問控制 5.屬性裝飾器 在python中,用變數表示特徵,用函式表示技能,因而具有相同特徵和技能的一類事物就是 類 物件是則是這一類事物中具體的乙個.三要素類 class 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所...

初識物件導向

開始接觸物件導向程式設計,學習時間不長,寫下點自己目前的理解,總結梳理下最近的學習成果。一切皆是物件,物件導向體系中有這麼一句經典的話。我認為可以這麼理解,物件導向程式設計的關鍵步驟是如何將我們所希望實現的功能抽象為計算機可實現的模型,這些模型我們可以稱之為物件。當我們把具有相同特點的多個物件進一步...