網(wǎng)站建設(shè)策劃基本流程圖yahoo搜索
基本概念
面向過(guò)程
-
是早期的一個(gè)編程概念,類似函數(shù),但是沒(méi)有返回值
-
具體做法:
-
把完成某個(gè)需求的所有步驟,從頭到尾 逐步實(shí)現(xiàn)
-
將某些功能獨(dú)立的代碼 封裝成一個(gè)又一個(gè) 函數(shù)
-
然后順序調(diào)用不同的函數(shù)
-
-
特點(diǎn):
-
注重?步驟與過(guò)程,不注重職責(zé)分工
-
如果需求復(fù)雜,代碼會(huì)變得很復(fù)雜
-
開(kāi)發(fā)復(fù)雜項(xiàng)目,沒(méi)有固定的套路,開(kāi)發(fā)難度大
-
面向?qū)ο?/strong>
-
相較于函數(shù),面向?qū)ο笫歉蟮姆庋b,根據(jù)?職責(zé)?在一個(gè)對(duì)象中封裝多個(gè)方法
-
在完成某個(gè)需求前,首選確定?職責(zé),根據(jù)職責(zé)確定不同的對(duì)象,在對(duì)象內(nèi)部封裝不同的方法
-
最后讓不同的對(duì)象調(diào)用不同的方法
-
特點(diǎn):
-
注重?對(duì)象和職責(zé),不同的對(duì)象承擔(dān)不同的職責(zé)
-
更加適合對(duì)應(yīng)復(fù)雜的需求變化,專門應(yīng)對(duì)復(fù)雜項(xiàng)目開(kāi)發(fā),提供固定套路
-
類和對(duì)象
-
類?和?對(duì)象?是面向?qū)ο蟮膬蓚€(gè)核心概念
-
在程序開(kāi)發(fā)中,先有?類?,后有?對(duì)象
-
類
-
對(duì)一群具有相同 特征 或 行為的事物的一個(gè)統(tǒng)稱,是抽象的,不能直接使用
-
特征 即 屬性
-
行為 即 方法(函數(shù))
-
-
類相當(dāng)于做汽車的圖紙,是一個(gè)模板,而根據(jù)這個(gè)?模板?做出來(lái)的具體物品就是?對(duì)象
-
三要素
-
類名?這類事物的名字,使用大駝峰命名法(HelloWorld)
-
屬性?指這類事物的特征
-
方法?指這類事物具備的行為
-
-
-
對(duì)象
-
對(duì)象?是根據(jù)類創(chuàng)建出來(lái)的一個(gè)具體存在,可以直接使用
-
根據(jù)類創(chuàng)建出來(lái)的對(duì)象,具備與類相同的?屬性?和?方法
-
類和對(duì)象的關(guān)系
-
類是模板,對(duì)象?是根據(jù)?類?這個(gè)模板創(chuàng)建出來(lái)的,先有類,后有對(duì)象
-
類 只有一個(gè),根據(jù)這個(gè)類創(chuàng)建的 對(duì)象 可以有多個(gè)
-
不同的對(duì)象之間,屬性可能會(huì)各有不同
-
-
類 中定義了什么樣的屬性和方法,對(duì)象中就是什么樣的屬性與方法
基礎(chǔ)語(yǔ)法
dir內(nèi)置函數(shù)
-
在 Python 中,對(duì)象幾乎無(wú)所不在,變更、數(shù)據(jù)、函數(shù)都是對(duì)象
-
使用內(nèi)置函數(shù)?dir?傳入?標(biāo)識(shí)符/數(shù)據(jù),可以查看對(duì)象內(nèi)的所有屬性和方法
-
__方法名__ 格式的方法是Python提供的?內(nèi)置方法/屬性
-
常見(jiàn)方法如下
方法名 | 類型 | 作用 |
__new__ | 方法 | 創(chuàng)建對(duì)象時(shí),會(huì)被自動(dòng)調(diào)用 |
__init__ | 方法 | 對(duì)象被初始化時(shí),會(huì)被自動(dòng)調(diào)用 |
__del__ | 方法 | 對(duì)象被從內(nèi)存中銷毀時(shí),會(huì)被自動(dòng)調(diào)用 |
__str__ | 方法 | 返回對(duì)象的描述信息,print?函數(shù)輸出使用 |
示例
# 定義函數(shù),測(cè)試內(nèi)置方法
def demo():passprint(dir(demo))
輸出結(jié)果
定義簡(jiǎn)單類
-
面向?qū)ο?是更大的封裝,在一個(gè)類中封裝多個(gè)方法,通過(guò)這個(gè)類創(chuàng)建的對(duì)象 可以直接使用這些方法
-
類中方法的定義,與之前定義函數(shù)時(shí),幾乎一樣,區(qū)別在于每一個(gè)參數(shù)必須是 self,?self 表示調(diào)用者本身的引用
-
調(diào)用中對(duì)象中的方法時(shí),self?不需要傳遞
-
可以通過(guò) self 調(diào)用對(duì)象的其它屬性或方法
示例
"""
需求:
定義一個(gè)狗類,狗有 吃骨頭,睡覺(jué)兩個(gè)方法"""
class Dog:# 第一個(gè)參數(shù) 必須是 self,表示調(diào)用者本身的引用def eat(self):print("狗狗要吃骨頭了...")def sleep(self):print("狗狗要睡覺(jué)了...")# 定義對(duì)象調(diào)用方法
dog=Dog()
dog.eat()
dog.sleep()# 定義第二個(gè) 狗對(duì)象
dog2=Dog()
dog2.eat()
dog2.sleep()# dog 和dog2 是用同一個(gè)類 創(chuàng)建出來(lái)的,里面的方法和屬性是一樣的,但是對(duì)象的引用是不同的
print(dog)
print(dog2)
輸出結(jié)果
對(duì)象的初始化
-
當(dāng)使用 類名()?創(chuàng)建對(duì)象時(shí),會(huì) 自動(dòng) 執(zhí)行以下操作
-
為對(duì)象分配內(nèi)存空間
-
為對(duì)象的屬性設(shè)置初始值(即調(diào)用 __init__ 方法)
-
-
__init__?是對(duì)象的內(nèi)置方法,專門用來(lái)定義一個(gè)類?具有哪些屬性的方法
示例
class Dog:def __init__(self,name):print("開(kāi)始初始化Dog的屬性...")self.name=namedef eat(self):print("%s 開(kāi)始吃骨頭了..."%self.name)def sleep(self):print("%s 想要睡覺(jué)了..." %self.name)# 定義對(duì)象,并為其屬性賦值
dog=Dog("小白")
dog.eat()
dog.sleep()dog2=Dog("小黑")
dog2.eat()
dog2.sleep()
輸出結(jié)果
內(nèi)置方法
-
__del__?方法:當(dāng)一個(gè)對(duì)象被從內(nèi)存中銷毀時(shí),會(huì)自動(dòng)調(diào)用
-
應(yīng)用場(chǎng)景
-
__init__?改造初始化方法,可以讓對(duì)象更加靈活
-
__del__?如果希望對(duì)象在被銷毀前,再做一些事情,可以使用此方法
-
-
生命周期
-
一個(gè)對(duì)象從調(diào)用?類名()?創(chuàng)建,生命周期開(kāi)始
-
一個(gè)對(duì)象的?__del__?方法一旦被調(diào)用,生命周期結(jié)束
-
在對(duì)象的生命周期內(nèi),可以訪問(wèn)對(duì)象屬性,或者調(diào)用對(duì)象方法
-
-
__str__ 方法:?默認(rèn)打印?對(duì)象變量的引用內(nèi)存地址值,如果希望使用 print 輸出對(duì)象變量時(shí),能夠打印?自定義的內(nèi)容,就可以利用?__str__?方法,該方法必須返回一個(gè)字符串
示例
class Dog:def __del__(self):print("小黑去輪回了......")def __str__(self):return "我是小黑的自定義打印內(nèi)容。。。"dog=Dog()
print(dog)
print("---------------11111111111")
輸出結(jié)果
程序猿與投資生活實(shí)錄已改名為? 程序猿知秋,WX同款,歡迎關(guān)注!