python基础15 ---面像对象的程序设计
面向?qū)ο蟮某绦蛟O(shè)計(jì)
一、面向?qū)ο蟮某绦蛟O(shè)計(jì)簡(jiǎn)介
1、面向?qū)ο蟪绦蛟O(shè)計(jì)的由來(lái)。
我們之前雖然學(xué)習(xí)過了面向過程的程序,它的核心是面向過程,一步一步的設(shè)計(jì)好了的流程,雖然極大的降低了程序的復(fù)雜度,但是一個(gè)設(shè)計(jì)
好了的流程只能滿足一個(gè)程序后期的可擴(kuò)展性差,所以為了解決面向過程的程序可擴(kuò)展性差的缺點(diǎn),產(chǎn)生了面向?qū)ο蟮某绦颉K墙鉀Q了
面向過程中可擴(kuò)展性差的問題,如果程序需要擴(kuò)展就可以對(duì)需要擴(kuò)展的某個(gè)對(duì)象單獨(dú)進(jìn)行修改,就會(huì)立刻反映到整個(gè)程序體系中,不需要
牽一發(fā)而動(dòng)全身。
注釋:像操作系統(tǒng)的開機(jī)流程,他就相當(dāng)于一個(gè)面向過程的程序,一步一步設(shè)計(jì)好了的,但是像我們玩的王者榮耀中的英雄人物,他們就是一
個(gè)面向?qū)ο蟮某绦?#xff0c;因?yàn)槟硞€(gè)英雄要添加新的技能時(shí)就可以在這個(gè)英雄的對(duì)象里面添加。
2、面向?qū)ο蟪绦虻膬?yōu)缺點(diǎn)。
1.優(yōu)點(diǎn):解決了程序的可擴(kuò)展性,對(duì)某一程序?qū)ο蟮膯为?dú)修改就可以立刻反應(yīng)到整個(gè)體系中,一般應(yīng)用于程序變動(dòng)需求比較大的軟件中,比較
? 游戲,人物的特征與技能都是面向?qū)ο蟪绦虼笳股硎值暮玫胤健?/span>
2.缺點(diǎn):可控性差,無(wú)法向面向過程的程序設(shè)計(jì)流水線式的可以很精準(zhǔn)的預(yù)測(cè)問題的處理流程與結(jié)果,面向?qū)ο蟮某绦蛞坏╅_始就由對(duì)象之間的
? 交互解決問題,即便是上帝也無(wú)法預(yù)測(cè)最終結(jié)果。于是我們經(jīng)常看到一個(gè)游戲人某一參數(shù)的修改極有可能導(dǎo)致陰霸的技能出現(xiàn),一刀砍死
3個(gè)人,這個(gè)游戲就失去平衡。
二、類和對(duì)象
1、對(duì)象和類的定義
在英雄聯(lián)盟,每個(gè)玩家選一個(gè)英雄,每個(gè)英雄都有自己的特征和和技能,特征即數(shù)據(jù)屬性,技能即方法屬性,特征與技能的結(jié)合體就一個(gè)對(duì)象。
在一組對(duì)象中,從他們的特性和技能中提取共有的內(nèi)容就是類,類是相同特征和技能的結(jié)合體。
2、python中對(duì)象和類的表示方式。
在python中,用變量表示特征,用函數(shù)表示技能,因而類是變量與函數(shù)的結(jié)合體,對(duì)象是變量與方法(指向類的函數(shù))的結(jié)合體
三、類簡(jiǎn)介
1、創(chuàng)建一個(gè)類。
class 類名:
? '類的文檔字符串' #相當(dāng)于定義了個(gè)變量(特性)也可以是字符串,統(tǒng)稱為類的數(shù)據(jù)部分。
? 類體#相當(dāng)于定義了個(gè)函數(shù)(技能),統(tǒng)稱為類的函數(shù)部分。
2、類的作用。
1.作用1是屬性引用(引用=增刪改查):
1.1引用類的數(shù)據(jù)屬性,該屬性與所有對(duì)象/實(shí)例共享。
? 格式為:類名.變量名(類中定義的變量的變量名)#可通過print(類名.變量名)來(lái)查看相對(duì)應(yīng)的值
1.2引用類的函數(shù)屬性,該屬性與所有對(duì)象/實(shí)例共享。
? 格式為:類名.函數(shù)(類中定義的函數(shù))#可通過print(類名.函數(shù))來(lái)查看相對(duì)應(yīng)的值
1.3刪除類的屬性
? 格式為 :del 類名.變量名(類中定義的函數(shù))
1.4增加類的屬性
? 格式為 :類名.需要增加的變量名=‘ 字符串’
2.作用2是實(shí)例化(__init__與self)
2.1.類名加括號(hào)就是實(shí)例化,會(huì)自動(dòng)觸發(fā)__init__函數(shù)的運(yùn)行,可以用它來(lái)為每個(gè)實(shí)例定制自己的特征。
2.2.self的作用是在實(shí)例化時(shí)自動(dòng)將對(duì)象/實(shí)例本身傳給__init__的第一個(gè)參數(shù),self可以是任意名字,但是瞎幾把寫別人就看不懂了。
3、查看一個(gè)類。
1.格式:dir(類名)#查出的是一個(gè)名字列表
2.格式:類名.__dict__#查出的是一個(gè)字典,key為屬性名,value為屬性值
四、對(duì)象簡(jiǎn)介
1、對(duì)象是關(guān)于類而實(shí)際存在的一個(gè)例子,先有類再有對(duì)象。
2、對(duì)象/實(shí)例只有一種作用:屬性引用
3、對(duì)象/實(shí)例本身只有數(shù)據(jù)屬性,但是python的class機(jī)制會(huì)將類的函數(shù)綁定到對(duì)象上,稱為對(duì)象的方法,或者叫綁定方法,綁定方法唯一綁定一個(gè)對(duì)象
同一個(gè)類的方法綁定到不同的對(duì)象上,屬于不同的方法,內(nèi)存地址都不會(huì)一樣。
五、 類名稱空間與對(duì)象/實(shí)例名稱空間
1、創(chuàng)建一個(gè)類就會(huì)創(chuàng)建一個(gè)類的名稱空間,用來(lái)存儲(chǔ)類中定義的所有名字,這些名字稱為類的屬性
? 2、類有兩種屬性:數(shù)據(jù)屬性和函數(shù)屬性其中類的數(shù)據(jù)屬性是共享給所有對(duì)象的而類的函數(shù)屬性是綁定到所有對(duì)象的:
3、創(chuàng)建一個(gè)對(duì)象/實(shí)例就會(huì)創(chuàng)建一個(gè)對(duì)象/實(shí)例的名稱空間,存放對(duì)象/實(shí)例的名字,稱為對(duì)象/實(shí)例的屬性。在obj.name會(huì)先從obj自己的名稱空間里找
name,找不到則去類中找,類也找不到就找父類...最后都找不到就拋出異常
?
轉(zhuǎn)載于:https://www.cnblogs.com/xuanan/p/7095437.html
總結(jié)
以上是生活随笔為你收集整理的python基础15 ---面像对象的程序设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 1760 A New Tetri
- 下一篇: 细说Cookie