在我們成長的過程中沪曙,不可避免的兩個過程:認識世界和交朋友递胧。
首先說說認識世界的過程鼎姐,在我們很小的時候匈挖,在認識新事物的時候只能從自己周圍的事物一個一個開始認識该抒,比如庸蔼,“爸爸”硬霍,“媽媽” 澡腾。再之后長大一些開始上學(xué)以后敞映,慢慢開始形成自己的認識思維较曼,有了自己做事情的步驟。接著進入了社會振愿,很多事情開始變的極度復(fù)雜捷犹,這個時候自己已經(jīng)形成了一套屬于自己的思維方式,開始去思考這些問題冕末,然后去解決萍歉。交朋友的過程也是這樣,從一開始的沒有朋友档桃,到有了朋友枪孩,朋友越來越多,再到知道了什么是好朋友藻肄,什么是普通朋友這樣的分類蔑舞。
代碼也是這樣,我們從一開始學(xué)習(xí)的基礎(chǔ)語法嘹屯,堆疊功能慢慢地轉(zhuǎn)入到了函數(shù)式編程【面向過程編程】攻询,在我們慢慢成長中又轉(zhuǎn)變到了面向?qū)ο缶幊蹋瑢W(xué)習(xí)的東西也開始由簡單慢慢地轉(zhuǎn)入了復(fù)雜州弟,但是這也意味著我們能夠運用這些東西去解決更為高級更為復(fù)雜的問題了钧栖。
說到這里低零,便可以請出我們今天的主角——面向?qū)ο缶幊塘恕K且环N更為常用更為高端復(fù)雜的編程思想拯杠,但是也不是說我們之前學(xué)習(xí)的函數(shù)式編程就沒用了掏婶,其實他們兩個各有利弊,在中小型的項目開發(fā)中潭陪,大家還是更傾向于用函數(shù)式編程雄妥,它可以將所有要處理的事情,開始封裝成具備一定處理功能的函數(shù)畔咧,調(diào)用執(zhí)行茎芭;而且它作為面向過程編程,更有利于小型項目的開發(fā)誓沸,讓這些項目的運行以及美觀程度到達自身的最佳狀態(tài)。但是在中大型項目開發(fā)中這樣的開發(fā)操作~代碼中封裝了大量的包含處理步驟的函數(shù)開發(fā)壹粟,代碼的邏輯處理方式不夠成熟拜隧,導(dǎo)致代碼高耦合。而面向?qū)ο笫菍γ嫦蜻^程編程的補充和完善趁仙,通過對象和對象之間的交互協(xié)作完成項目功能的開發(fā)洪添,降低代碼的耦合度,從而能夠使代碼的靈活性更高雀费,代碼分工更加明確開發(fā)效率更高干奢,甚至于代碼看上去更加的優(yōu)雅,畢竟優(yōu)雅就是python的特點之一盏袄。所以在很多的企業(yè)級開發(fā)中都傾向于面向?qū)ο缶幊趟枷脒M行開發(fā)忿峻。
在面向?qū)ο笾校覀兪紫葢?yīng)該聲明定義類型:->創(chuàng)建對象->對象有自身的特征辕羽、屬性(名詞|變量)->對象自身的行為(動詞|方法(特殊的函數(shù)))逛尚。
但是這個時候就會有人問了,到底什么是類型什么是對象呢刁愿?類型绰寞,它是一個名稱、一個概念铣口、一個稱呼滤钱,就比如我們生活中常說的車,衣服脑题,鞋子之類的事物件缸,它是大量有相似特征的事物抽象出來的一個統(tǒng)稱;而對象旭蠕,它就是一種客觀存在的具體的事物停团,就比如車可以分為轎車旷坦,越野車,卡車等等佑稠,它們每一個都是一個對象秒梅,因為它們都是獨立客觀存在具體因為它們都是獨立客觀存在擁有具體特征行為的事物。
類型:
首先應(yīng)該通過一個class關(guān)鍵字定義一個數(shù)據(jù)類型(又稱類型舌胶,簡稱類)捆蜀,
基本語法為:class 類型名稱:
類型中的代碼
類型名稱命名規(guī)范:見名知意、駝峰命名法[一個或者多個英文單詞組成幔嫂、每個單詞首字母大寫]
而且需要通過項目中需要的大量有相似特征和行為的對象辆它,抽象出來的一個數(shù)據(jù)類型
對象:
對象:有具體特征和行為操作的事物
代碼:有具體(特征)屬性和(行為)方法的對象-> 事物
類型 VS 對象 區(qū)別?
類型:通過對象抽象出來的一個數(shù)據(jù)類型
類型中需要定義對象需要的特征[屬性|變量]和行為[方法]
class Person:
# 定義屬性履恩、特征
# 固定寫法:在__init__方法中锰茉,定義類型的屬性
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# 定義方法、行為
def eat(self, food):
print("吃飯了")
注意1:class 關(guān)鍵字切心,用來聲明定義一個類型飒筑,固定寫法
注意2:類型中的所有函數(shù),第一個參數(shù)self表示當(dāng)前對象绽昏,類似生活中的一個名詞:我
注意3:類型中的函數(shù)协屡,必須稱為方法;
函數(shù) VS 方法 : 兩個東西
方法是一種特殊的函數(shù)全谤,只能在類型中使用肤晓!
注意4:類型中方法,第一個參數(shù):指代的是當(dāng)前對象~~~一般被聲明為self
表示當(dāng)前對象认然,調(diào)用的時候不需要傳遞數(shù)據(jù)給self补憾!
對象:某中類型一個具體存在的事物
代碼中的對象,需要通過類型來創(chuàng)建
如:tom = Person('湯姆', 18, '男')
通過 類型名稱() 的方式創(chuàng)建對象
創(chuàng)建對象時季眷,自動調(diào)用執(zhí)行__init__()方法余蟹,將對象需要的數(shù)據(jù)傳遞過去
有了對象,就可以執(zhí)行對象的行為:調(diào)用對象的方法
通過 對象的變量.方法()直接調(diào)用
tom.eat("魚香肉絲")