今天開始寫關於面向對象的內容,面向對象是編程思想中一大思想,因爲平常使用中常常會用到,本次主要是對於我我的認爲重點的基礎知識進行整理,不會特別詳細的書寫。編程
1.面向過程與面向對象的區別函數
2.類spa
3.類的屬性以及操做方式3d
4.對象指針
5.對象的屬性以及操做方法code
6.類的名稱空間以及對象空間對象
開始今日份整理blog
1.面向過程與面向對象的區別遊戲
1.1面向過程:核心是過程二字,過程指的是解決問題的步驟,設定一條流水線,機械式的思考問題圖片
1.2面向對象:核心是對象二字,對象的特徵就是特徵與技能的結合體
2.類
2.1類的定義:一系列對象類似的技能和技能的結合體;強調:站在不一樣的角度,獲得的分類是不一致的;對象是類的具體表現
現實中類與對象
貓,是一類,你家的大橘是一個具體的對象
狗,是一類,你家的大黃是一個具體的對象
男神,是一類,你最喜歡的老公是一個具體的對象
在現實中,先有對象,纔會找到共同的特徵,歸爲一類
在編程中,先有類,纔會根據類建立對象,恰好相反
2.2類的結構
##########
class 類名()#類名要首字母大寫
變量
函數(方法)
##########
3.類的屬性以及操做方式
類的屬性主要分倆種
靜態屬性的查詢
# 第一種,類名.__dict__方式:查看類中全部內容時用。 # 查: print(Human.__dict__) print(Human.__dict__['mind']) Human.__dict__['mind'] = '無腦' print(Human.__dict__) # 第二種 萬能的. 能夠增刪改查類中的靜態屬性。 print(Human.mind) # 查 Human.mind = '無腦' # 改 print(Human.mind) del Human.mind # 刪 Human.walk = '直立行走' print(Human.walk)
類內方法的調用
# 類名操做類中的方法(除去特殊方法:靜態方法,類方法以外,通常不會經過類名執行類中的方法)。 # 類名.方法名(參數) Human.work(111) Human.tools(111) #下面能夠作,但不用。 Human.__dict__['work'](111)
4.對象
4.1對象的定義:對象是特徵與技能的結合體,只要類名加()就能夠生成一個對象
4.2實例化一個對象的過程
5.對象的屬性以及操做方法
對象操做對象空間中的屬性
obj = Human('小胖','男',20,'女') #1,obj.__dict__ 查詢對象中全部的屬性 print(obj.__dict__) #2, 經過萬能的.的方式操做對象中的單個屬性。 obj.job = 'IT' # 增 del obj.n # 刪 obj.s = '女' # 改 print(obj.s) print(obj.__dict__) # 3,對象能夠查詢類中的屬性。 print(obj.mind) print(obj.language) obj.a = 666 print(obj.a) # 4,對象能夠執行類中的方法。 # 對象執行類中的全部方法(除去3個特殊方法)Python解釋器都會將對象空間主動傳給方法的第一個參數self、 print(obj) obj.work()
類中的方法的第一個參數約定俗成寫self,便於統一,生成多個對象只須要屢次調用類名加()加屬性就能夠生成
6.類的名稱空間以及對象空間
class Gamerole(object): name = 'LOL' year = 2012 def __init__(self,name,ad,hp): self.name = name self.ad = ad self.hp = hp def attack(self,p1): # Gamerole.area = '德瑪西亞' p1.hp -= self.ad print('%s攻擊%s,%s掉了%s血,還剩%s血' %(self.name,p1.name,p1.name,self.ad,p1.hp)) # gailun = Gamerole('草叢倫',10,200) # gailun.armor = 90 # print(gailun.__dict__) # 對象的屬性:不只在__init__裏面添加,還能夠在其餘方法或者類外面添加。 # yasuo = Gamerole('託兒所',20,50) # yasuo.attack(gailun) # 類的屬性:不只在類內部能夠添加,還能夠在類外部添加。 # Gamerole.year = 6 # print(Gamerole.__dict__) gailun = Gamerole('草叢倫',10,200) timo = Gamerole('提莫',30,60) print(gailun.name) print(gailun.year) # 對象空間中存在一個類對象指針,因此對象能夠找到類中的變量以及方法 # 類名只能找到類中的變量,方法,或者(父類中的),不能找對象中的屬性。
類中的函數屬性:是綁定對象,綁定不一樣的對象是不一樣的綁定方法,對象調用綁定方法時,會把對象自己當作第一個參數傳給 self,類中的函數是給對象來使用,誰來誰使用。若是類訪問本身的屬性時,會先從本身的名稱空間訪問,沒有則會去本身的父類去查找,若是沒有則不會從全局變量中查找,只會在類的空間中查找。