Python面向?qū)ο笏枷肱c應(yīng)用入門(mén)教程【類(lèi)與對(duì)象】
本文實(shí)例講述了Python面向?qū)ο笏枷肱c應(yīng)用。分享給大家供大家參考,具體如下:
面向?qū)ο笏枷?/strong>
1、面向?qū)ο蟮脑O(shè)計(jì)思想
面向?qū)ο笫腔谌f(wàn)物皆對(duì)象這個(gè)哲學(xué)觀點(diǎn)。
2、面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別
面向過(guò)程
在生活中:
它是一種看待問(wèn)題的思維方式,在思考問(wèn)題的時(shí)候,著眼問(wèn)題是怎樣一步一步解決的,然后親力親為去解決問(wèn)題[類(lèi)似于公司里的執(zhí)行者]。
在程序中:
代碼是從上而下順序執(zhí)行,各個(gè)模塊之間的關(guān)系盡可能簡(jiǎn)單,在功能上相對(duì)獨(dú)立,程序的流程在寫(xiě)程序的時(shí)候就已經(jīng)決定。
面向?qū)ο?/p>
在生活中:
它是另一種看待問(wèn)題的方式,它著眼于找到一個(gè)具有特殊功能的個(gè)體,然后委托這個(gè)個(gè)體去幫你完成某件事.這更符合人類(lèi)思考習(xí)慣的思想[指揮者]。
在程序中:
把數(shù)據(jù)以及對(duì)數(shù)據(jù)的操作方法放在一起,作為一個(gè)相互依存的整體–對(duì)象;
把同類(lèi)的對(duì)象進(jìn)行抽象出其共性,形成類(lèi);
類(lèi)中大多數(shù)數(shù)據(jù),只能用本類(lèi)的方法進(jìn)行處理;
類(lèi)通過(guò)一個(gè)簡(jiǎn)單的外部接口與外界發(fā)生關(guān)系,對(duì)象與對(duì)象之間通過(guò)消息進(jìn)行通信;
程序執(zhí)行的流程由用戶(hù)在使用的過(guò)程中決定;
使用面向?qū)ο笏枷脒M(jìn)行開(kāi)發(fā),需要先找到具有所需功能的對(duì)象來(lái)使用,如果這個(gè)對(duì)象不存在,那么則需要?jiǎng)?chuàng)建這么一個(gè)具有所需功能的對(duì)象。
注意:面向?qū)ο笾皇且环N思想,并不是一門(mén)編程語(yǔ)言。
區(qū)別總結(jié)
a. 都是看待問(wèn)題的一種思維方式,都能解決問(wèn)題;
b. 面向過(guò)程著眼于所有的事情親力親為;
c. 面向?qū)ο笾塾谡业揭粋€(gè)具有特殊功能的對(duì)象,委托這個(gè)對(duì)象實(shí)現(xiàn)你需要實(shí)現(xiàn)的功能。python語(yǔ)言是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,類(lèi)和對(duì)象是面向?qū)ο蟮暮诵摹?/p>
類(lèi)和對(duì)象
1、類(lèi)和對(duì)象的概念
類(lèi):一個(gè)具有特殊功能的實(shí)體的集合[群體]。
對(duì)象:在一個(gè)類(lèi)中,一個(gè)具有特殊功能的實(shí)體,能夠幫忙解決特定的問(wèn)題,對(duì)象通常也被稱(chēng)為實(shí)例。
兩者之間的關(guān)系:類(lèi)用于描述某一對(duì)象的共同特征,而對(duì)象則是類(lèi)的具體存在。
舉例:
學(xué)生 張三、李四
快遞 順豐、韻達(dá)總結(jié):
類(lèi)與對(duì)象的關(guān)系:
a.類(lèi)是對(duì)象的抽象,對(duì)象是類(lèi)的具體體現(xiàn)。
b.類(lèi)也是一種數(shù)據(jù)類(lèi)型,只不過(guò)是自己定義的,類(lèi)似與number,string等,它本身并不占用空間,但是它的實(shí)例[對(duì)象]是占用空間的。
2、類(lèi)的定義
格式:
class 類(lèi)名(object): 類(lèi)體
說(shuō)明:
a.python中使用class關(guān)鍵字定義類(lèi);
b.類(lèi)名只要是一個(gè)合法的標(biāo)識(shí)符即可,命名規(guī)則遵循”大駝峰式命名”【每個(gè)單詞的首字母大寫(xiě)】;
c.盡量使用單個(gè)或者多個(gè)有意義的單詞連接而成
演示
# 一個(gè)簡(jiǎn)單的類(lèi)的實(shí)例
class Person():
print("hello")
3、類(lèi)的設(shè)計(jì)
只需要關(guān)心3樣?xùn)|西
1.事物名稱(chēng)[類(lèi)名]: 如人類(lèi) (Person);
2.特征(屬性): 如身高(height) 年齡(age)等 ——>名詞;
3.行為(方法): 如跑(run) 說(shuō)話(huà)(say) —————>動(dòng)詞。
類(lèi)中的方法和屬性
1、方法和屬性的定義
生活中描述事物的無(wú)非就是描述事物的特征和行為。
python中用類(lèi)來(lái)描述事物也是如此,前面已經(jīng)定義了類(lèi),但是,如果只有類(lèi)單獨(dú)存在,沒(méi)有任何意義,所以定義類(lèi)其實(shí)就是定義類(lèi)中的成員[成員變量和成員方法]。
在類(lèi)中的變量我們稱(chēng)之為成員變量,在類(lèi)中的方法我們稱(chēng)之為成員方法(函數(shù))。
成員變量—>類(lèi)具有的特征 例如:人—>身高,性別,體重。
成員方法 —>類(lèi)具有的行為 例如人—>吃喝玩樂(lè)。
因此,擁有相同的(或者類(lèi)似)屬性和行為的對(duì)象都可以抽取出一個(gè)類(lèi)。
class Persion():
#成員變量,初始值就是相當(dāng)于默認(rèn)值
name = ""
age = 0
height = 0
weight = 0
#成員方法
#在類(lèi)的內(nèi)部,使用def關(guān)鍵字來(lái)定義的一個(gè)方法
#注意:區(qū)別于普通方法,類(lèi)中方法的參數(shù)必須包含參數(shù)self,且為第一個(gè)參數(shù)
#self代表類(lèi)的實(shí)例(某個(gè)對(duì)象)
def run(self):
print("run")
def eat(self, food):
print("eat",food)
def sleep(self):
print("sleeping")
說(shuō)明:定義了類(lèi),并在類(lèi)中定義了成員變量和成員方法,但是成員變量和成員方法是如何使用的呢?
2、方法和屬性的使用
2.1、實(shí)例化對(duì)象:
前面說(shuō)過(guò),對(duì)象是實(shí)實(shí)在在的個(gè)體,負(fù)責(zé)去完成某件指定的事情。
對(duì)象的創(chuàng)建的過(guò)程又被稱(chēng)作對(duì)象的實(shí)例化過(guò)程。
語(yǔ)法:
對(duì)象名 = 類(lèi)名()
''' 實(shí)例化對(duì)象 格式: 對(duì)象名 = 類(lèi)名() 注意: 沒(méi)有參數(shù)的時(shí)候,小括號(hào)也不能省略 ''' #實(shí)例化一個(gè)對(duì)象 pre1 = Person() print(pre1) print(type(per1)) print(id(per1)) per2 = Person() print(per2) print(type(per2)) print(id(per2))
3、對(duì)象調(diào)用方法和屬性
per = Preson()
'''
訪(fǎng)問(wèn)屬性
格式:對(duì)象名.屬性名
賦值:對(duì)象名.屬性名 = 新值
'''
per.name = 'lili'
per.age = 18
per.height = 160
per.weight = 80
print(per.name, per.age, per.height, per.weight)
'''
訪(fǎng)問(wèn)方法
格式:對(duì)象名.方法名(參數(shù)列表)
'''
per.run()
per.eat("apple")
per.sleep()
#問(wèn)題:目前來(lái)看Person創(chuàng)建的所有對(duì)象屬性都是一樣的
per2 = Person()
print(per2.age)
per3 = Person()
print(per3.age)
總結(jié):
訪(fǎng)問(wèn)變量采用: 對(duì)象名.屬性名;
訪(fǎng)問(wèn)方法采用: 對(duì)象名.方法名(參數(shù)列表)。
4、內(nèi)存中的對(duì)象
per = Person()
說(shuō)明:程序中定義Person類(lèi)型的變量per實(shí)際是一個(gè)變量名,它被存放在棧內(nèi)存中,它指向?qū)嶋H的Person對(duì)象,而真正的Person對(duì)象則存放在堆內(nèi)存中。
綜合練習(xí):
第一天開(kāi)學(xué),介紹一下你自己其中包括姓名,年齡以及愛(ài)好
#學(xué)生類(lèi)
class Student():
#特征:成員變量
self.name = ""
self.age = ""
self.hobby =""
def introduce(self,name, age, hobby):
print("大家好,我是%s,今年%d歲,愛(ài)好是%s"%(name,age, hobby))
def singsong(self):
print("娘子~啊哈")
def dance(self):
print("廣場(chǎng)舞跳起來(lái)...")
def lie(self):
print("我家特別窮,我小時(shí)候就一直在放牛,只有幾萬(wàn)頭....")
# 類(lèi)實(shí)例化
stu = Student()
# 成員方法調(diào)用
stu.introduce('ldc',18,'跑步')
stu.singsong()
stu.dance()
stu.lie()
輸出:
大家好,我是ldc,今年18歲,愛(ài)好是跑步
娘子~啊哈
廣場(chǎng)舞跳起來(lái)...
我家特別窮,我小時(shí)候就一直在放牛,只有幾萬(wàn)頭....
如何查看所有屬性和方法
class Test():
def __init__(self,name):
self.name = name
def test(self):
print('testing...')
test = Test('測(cè)試')
# 查看所有屬性和方法
list1 = dir(test)
# 檢查實(shí)例是否有這個(gè)屬性
print(hasattr(test, 'name'),hasattr(test, 'test'),hasattr(test, 'tt'))
# 設(shè)置屬性值
setattr(test,'name','測(cè)試2')
# 獲取屬性值
print(getattr(test, 'name'))
輸出:
True True False
測(cè)試2
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python使用BeautifulSoup分析網(wǎng)頁(yè)信息的方法
這篇文章主要介紹了python使用BeautifulSoup分析網(wǎng)頁(yè)信息的方法,涉及Python使用BeautifulSoup模塊分析網(wǎng)頁(yè)信息的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
python實(shí)現(xiàn)的登錄與提交表單數(shù)據(jù)功能示例
這篇文章主要介紹了python實(shí)現(xiàn)的登錄與提交表單數(shù)據(jù)功能,結(jié)合實(shí)例形式分析了Python表單登錄相關(guān)的請(qǐng)求與響應(yīng)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-09-09
Python threading模塊中l(wèi)ock與Rlock的使用詳細(xì)講解
python的thread模塊是比較底層的模塊,python的threading模塊是對(duì)thread做了一些包裝的,可以更加方便的被使用。這篇文章主要介紹了Python threading模塊中l(wèi)ock與Rlock的使用2022-10-10
python-xpath獲取html文檔的部分內(nèi)容
這篇文章主要介紹了python-xpath獲取html文檔的部分內(nèi)容,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Python的Flask框架中配置多個(gè)子域名的方法講解
Fask中可以通過(guò)通配符子域的方式來(lái)部署多個(gè)子域名,這里我們就來(lái)作一個(gè)Python的Flask框架中配置多個(gè)子域名的方法講解,需要的朋友可以參考下2016-06-06
僅用50行Python代碼實(shí)現(xiàn)一個(gè)簡(jiǎn)單的代理服務(wù)器
這篇文章主要介紹了僅用50行Python代碼實(shí)現(xiàn)一個(gè)簡(jiǎn)單的代理服務(wù)器,利用最簡(jiǎn)單的client->proxy->forward原理在socket模塊下編寫(xiě),需要的朋友可以參考下2015-04-04
Python創(chuàng)建Excel表和讀取Excel表的基本操作
這篇文章主要介紹了Python創(chuàng)建Excel表和讀取Excel表的基本操作,文中通過(guò)代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07
python openpyxl打開(kāi)文件關(guān)閉問(wèn)題
這篇文章主要介紹了python openpyxl打開(kāi)文件關(guān)閉問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Keras SGD 隨機(jī)梯度下降優(yōu)化器參數(shù)設(shè)置方式
這篇文章主要介紹了Keras SGD 隨機(jī)梯度下降優(yōu)化器參數(shù)設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python實(shí)現(xiàn)連點(diǎn)器的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)連點(diǎn)器,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03

