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

Django restful framework生成API文檔過程詳解

python通過TimedRotatingFileHandler按時間切割日志

Django+Uwsgi+Nginx如何實現(xiàn)生產(chǎn)環(huán)境部署

pytorch 搭建神經(jīng)網(wǎng)路的實現(xiàn)