python基础15 ---面像对象的程序设计
面向對象的程序設計
一、面向對象的程序設計簡介
1、面向對象程序設計的由來。
我們之前雖然學習過了面向過程的程序,它的核心是面向過程,一步一步的設計好了的流程,雖然極大的降低了程序的復雜度,但是一個設計
好了的流程只能滿足一個程序后期的可擴展性差,所以為了解決面向過程的程序可擴展性差的缺點,產生了面向對象的程序。他是解決了
面向過程中可擴展性差的問題,如果程序需要擴展就可以對需要擴展的某個對象單獨進行修改,就會立刻反映到整個程序體系中,不需要
牽一發而動全身。
注釋:像操作系統的開機流程,他就相當于一個面向過程的程序,一步一步設計好了的,但是像我們玩的王者榮耀中的英雄人物,他們就是一
個面向對象的程序,因為某個英雄要添加新的技能時就可以在這個英雄的對象里面添加。
2、面向對象程序的優缺點。
1.優點:解決了程序的可擴展性,對某一程序對象的單獨修改就可以立刻反應到整個體系中,一般應用于程序變動需求比較大的軟件中,比較
? 游戲,人物的特征與技能都是面向對象程序大展身手的好地方。
2.缺點:可控性差,無法向面向過程的程序設計流水線式的可以很精準的預測問題的處理流程與結果,面向對象的程序一旦開始就由對象之間的
? 交互解決問題,即便是上帝也無法預測最終結果。于是我們經常看到一個游戲人某一參數的修改極有可能導致陰霸的技能出現,一刀砍死
3個人,這個游戲就失去平衡。
二、類和對象
1、對象和類的定義
在英雄聯盟,每個玩家選一個英雄,每個英雄都有自己的特征和和技能,特征即數據屬性,技能即方法屬性,特征與技能的結合體就一個對象。
在一組對象中,從他們的特性和技能中提取共有的內容就是類,類是相同特征和技能的結合體。
2、python中對象和類的表示方式。
在python中,用變量表示特征,用函數表示技能,因而類是變量與函數的結合體,對象是變量與方法(指向類的函數)的結合體
三、類簡介
1、創建一個類。
class 類名:
? '類的文檔字符串' #相當于定義了個變量(特性)也可以是字符串,統稱為類的數據部分。
? 類體#相當于定義了個函數(技能),統稱為類的函數部分。
2、類的作用。
1.作用1是屬性引用(引用=增刪改查):
1.1引用類的數據屬性,該屬性與所有對象/實例共享。
? 格式為:類名.變量名(類中定義的變量的變量名)#可通過print(類名.變量名)來查看相對應的值
1.2引用類的函數屬性,該屬性與所有對象/實例共享。
? 格式為:類名.函數(類中定義的函數)#可通過print(類名.函數)來查看相對應的值
1.3刪除類的屬性
? 格式為 :del 類名.變量名(類中定義的函數)
1.4增加類的屬性
? 格式為 :類名.需要增加的變量名=‘ 字符串’
2.作用2是實例化(__init__與self)
2.1.類名加括號就是實例化,會自動觸發__init__函數的運行,可以用它來為每個實例定制自己的特征。
2.2.self的作用是在實例化時自動將對象/實例本身傳給__init__的第一個參數,self可以是任意名字,但是瞎幾把寫別人就看不懂了。
3、查看一個類。
1.格式:dir(類名)#查出的是一個名字列表
2.格式:類名.__dict__#查出的是一個字典,key為屬性名,value為屬性值
四、對象簡介
1、對象是關于類而實際存在的一個例子,先有類再有對象。
2、對象/實例只有一種作用:屬性引用
3、對象/實例本身只有數據屬性,但是python的class機制會將類的函數綁定到對象上,稱為對象的方法,或者叫綁定方法,綁定方法唯一綁定一個對象
同一個類的方法綁定到不同的對象上,屬于不同的方法,內存地址都不會一樣。
五、 類名稱空間與對象/實例名稱空間
1、創建一個類就會創建一個類的名稱空間,用來存儲類中定義的所有名字,這些名字稱為類的屬性
? 2、類有兩種屬性:數據屬性和函數屬性其中類的數據屬性是共享給所有對象的而類的函數屬性是綁定到所有對象的:
3、創建一個對象/實例就會創建一個對象/實例的名稱空間,存放對象/實例的名字,稱為對象/實例的屬性。在obj.name會先從obj自己的名稱空間里找
name,找不到則去類中找,類也找不到就找父類...最后都找不到就拋出異常
?
轉載于:https://www.cnblogs.com/xuanan/p/7095437.html
總結
以上是生活随笔為你收集整理的python基础15 ---面像对象的程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 1760 A New Tetri
- 下一篇: 使用python+ffmpeg批量转换格