python面向?qū)ο蟾拍罴熬毩曨}_第1頁
python面向?qū)ο蟾拍罴熬毩曨}_第2頁
python面向?qū)ο蟾拍罴熬毩曨}_第3頁
python面向?qū)ο蟾拍罴熬毩曨}_第4頁
python面向?qū)ο蟾拍罴熬毩曨}_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、面向?qū)ο蠹熬毩曨}1.面向?qū)ο竺嫦驅(qū)ο蟾拍蠲嫦驅(qū)ο笫且环N編程思想,是對現(xiàn)實世界中的事物進行抽象的方式。應(yīng) 用到代碼編程設(shè)計中,是一種建立現(xiàn)實世界事物模型的方式。面向?qū)ο蠛兔嫦蜻^程區(qū)別面向過程關(guān)注的是完成工作的 步驟,面向?qū)ο箨P(guān)注的是 誰能完成工作。 面向?qū)ο笫窃谕瓿晒ぷ鞯臅r候關(guān)注哪些個體能夠完成對應(yīng)的工作,找到對應(yīng)的個體即可完成對應(yīng)任務(wù)。2.類類的概念類是一系列事物的統(tǒng)稱,同類事物必定具有相同的特征。日常事物的特征根 據(jù)特性分為狀態(tài)和行為,對應(yīng)到類中是變量和方法。特征分類:狀態(tài)?變量(成員變量)行為?方法(成員方法)統(tǒng)稱:類的成員類定義語法格式class 類名: pass說明:pass是空語句,

2、不具有任何意義,僅為了保持程序結(jié)構(gòu)完整性類名的命名規(guī)則類名命名規(guī)范:滿足大駝峰命名規(guī)則3.對象對象的概念對象是類的具體表現(xiàn)形式,是實際存在的個體。(類是一系列事物的統(tǒng)稱)創(chuàng)建對象語法格式對象名=類名()注意事項對象的創(chuàng)建不限制數(shù)量,一個類可以創(chuàng)建任意個數(shù)的對象4 .成員變量成員變量的概念成員變量用于描述對象的固有狀態(tài)或?qū)傩浴6x成員變量語法格式(公有屬性/公有變量)class 類名:def _init_(self):self.變量名1 =值1self.變量名 2 = None成員變量定義語法格式(獨有屬性/獨有變量)對象名.變量名=值公有變量與獨有變量的區(qū)別公有變量在_init_方法中聲明,每

3、個對象都具有該變量 獨有變量在創(chuàng)建對象后聲明,只有當前對象具有此變量定義對象的獨有變量時,如果獨有變量名與公有變量名相同,視為修改公有變量的值;如果獨有變量名與公有變量名不相同,視為定義新的獨有屬性None含義是為空,表示沒有具體的數(shù)據(jù)變量的調(diào)用格式取值:對象名.變量名賦值:對象名.變量名=值5 .成員方法成員方法概念成員方法用于描述對象的固有行為定義成員方法語法格式格式一(無參方法):class 類名:def 方法名(self):方法體格式二(有參方法)class 類名:def方法名(self,形參1,形參2,):方法體調(diào)用成員方法語法格式格式一(調(diào)用無參方法):對象名.方法名()格式二(調(diào)

4、用有參方法):對象名.方法名(實參1,實參2,)6 . init 方法方法的作用_init_方法,也稱為構(gòu)造方法,創(chuàng)建對象時為對象初始化成員變量定義init_方法語法格式格式一:definit_(self):self.變量名1 =值1格式二:def _init_(self,形參 1,形參 2,):屬性名1 =形參1屬性名2 =形參2方法調(diào)用和執(zhí)行_init_方法在創(chuàng)建對象時被運行,無需手工調(diào)用即可執(zhí)行_init_方法中如果有形參,在創(chuàng)建對象時需要傳遞對應(yīng)的實參魔術(shù)方法魔術(shù)方法是在類中聲明、定義的方法,執(zhí)行時無需手工調(diào)用,自動執(zhí)行7 . str_ 方法方法的作用_str_方法是在使用print函

5、數(shù)打印輸出對象到屏幕時被調(diào)用的方法, 用于返回對象的規(guī)范化字符串表現(xiàn)形式定義_str_方法語法格式def _str_(self):return打印對象是顯示的信息8 .成員方法調(diào)用類成員成員方法中調(diào)用成員變量語法格式self.變量名成員方法中調(diào)用成員方法語法格式self.方法名(實參1,實參2,)selfself僅出現(xiàn)在成員方法中,指代執(zhí)行該方法的 對象。9 .封裝封裝的作用封裝操作可以對受訪問保護的成員進行功能開放的控制,達到保護數(shù)據(jù) 不被非法訪問的目的定義私有變量語法格式屬性名=值定義私有方法語法格式def _方法名(self ,形參1,形參2,):方法體標準封裝語法格式變量私有化格式:屬

6、性名=值提供公共的訪問器格式:def get_JS性名(self):return 屬性名提供公共的修改器格式:def set_屬性名(self,屬性名):屬名=屬性名10 .類變量類變量的概念類變量是定義在類中,不屬于某個具體對象的特征,被所有對象共同使 用的特征定義類變量語法格式class 類名:變量名=值調(diào)用類變量語法格式賦值格式:類名.類變量名=值取值格式:類名.類變量名(推薦)對象名.類變量名(不推薦)注意事項類變量推薦使用類名取值訪問,也可以使用對象名取值訪問類變量只能通過類名修改;使用對象名調(diào)用類變量修改類變量的值 時會創(chuàng)建新的對象獨有變量;如果此時對象具有同名對象變量,則 修改對

7、應(yīng)的變量值類變量可以私有化11 .類方法類方法的概念類方法是定義在類中,不屬于某個具體對象的行為,被所有對象共同使用的行為定義類方法基本語法class 類名:classmethoddef方法名(cls ,形參1,形參2,):方法體調(diào)用類方法語法格式類名.類方法名(實參1,實參2,)(推薦)對象名.類方法名(實參1,實參2,)(不推薦)注意事項類方法中不允許使用實例變量和實例方法類方法中允許使用類變量和類方法,通過第一個參數(shù) cls進行 實例方法中允許使用類變量和類方法12 .靜態(tài)方法定義靜態(tài)方法語法格式class 類名:staticmethoddef方法名(形參1,形參2,):方法體調(diào)用靜態(tài)方

8、法語法格式類名.靜態(tài)方法名(實參1,實參2,)(推薦)對象名.靜態(tài)方法名(實參1,實參2,)(不推薦)各種方法定義規(guī)則只訪問成員變量的方法,定義成實例方法 只訪問類變量的方法,定義類方法既訪問成員變量,也訪問類變量的方法,定義成實例方法既不訪問成員變量,也不訪問類變量,定義成靜態(tài)方法練習題1概念理解要求:1. 如何理解面向?qū)ο缶幊?OOP)2. 什么是類,什么是對象提示:1. 類和對象有兩個層面的含義:類是對一類具體的事物的抽象的概括, 具有相似內(nèi)部狀態(tài)和運動規(guī)律的實體的集合,具有相同屬性和行為事物的統(tǒng)稱,是抽 象的;對象是一個具體的事物,在現(xiàn)實世界中可以是看得見摸得著的, 可以直接 使用的2

9、. 擁有相同(或者類似)屬性和行為的對象都可以抽像出一個類練習題2定義類、創(chuàng)建對象要求:1. python中如何定義一個類class 類名:? ?方法?class Test:? ? def test (self ):? ? ? ? pass2. 類(class)由哪三個部分構(gòu)成類的名稱、類的屬性、類的方法3. 類名的命名規(guī)則是什么大駝峰命名法4. python中如何通過類創(chuàng)建對象,請用代碼進行說明#創(chuàng)建對象#對象名=類名()class Human? # 定義類? ? passman= Huma0 ?#創(chuàng)建對象5. 如何在類中定義一個方法,請用代碼進行說明class Human? ? #定義ru

10、n方法? ? def run (self ):? ? ? ? print (正在奔跑)6. 定義一個People類,使用People類,創(chuàng)建一個mayunX寸象后,添加company屬性,值是阿里巴巴;創(chuàng)建一個wangjianling 對象,添加company屬性,值 是萬達集團class People: ? ? pass mayun= People() ?# 倉建 mayun對象=阿里巴巴? #為對象添加屬性wangjianlin = People() ? # 倉1建 wangjianlin 對象 =萬達集團”7. 定義一個水果類,然后通過水果類,創(chuàng)建蘋果對象、橘子對象、西瓜對象并分別添加上

11、顏色屬性class Fruit : ? ? pass apple = Fruit () =紅色 orange = Fruit () =橙色 watermelon = Fruit () watermelon =綠色8. 定義一個汽車類,并在類中定義一個move方法,然后分別創(chuàng)建BMW_X9AUDI_A9寸象,并添加顏色、馬力、型號等屬性,然后分別打印出屬性值、調(diào)用 move方法class Car:? ? def move( self ):? ? ? ? print (汽車正在移動)BMW_X9 Car()=次色=300=X9()print (這輛$ %s的馬力是$匹,)AUDI_A9= Car(

12、)=運色=320=A9()print (這輛$ %s的馬力是s匹 ,)提示:1. 可以在通過類創(chuàng)建出對象后,再為對象添加屬性:對象名.屬性名=值的方式添加2. 調(diào)用對象的方法和調(diào)用普通函數(shù)的一樣,使用()來實現(xiàn)調(diào)用,只不過調(diào)用方法需要使用:對象名.方法名()來進行調(diào)用練習題3要求:_init_ 方法、_str_ 方法、self1. init 方法有什么作用,如何定義當使用類名()的方法去創(chuàng)建對象的時候python解釋器會自動調(diào)用_init_方法因此可以在_init_方法中做一些初始化的設(shè)定在每次創(chuàng)建新對象時,都自動完成這些初始化的設(shè)定class Human? ? def _init_ (sel

13、f ): ?#注意名字不能寫錯,否則就只是一個普通的方法? ? ? ? pass2. _str_方法有什么作用,使用時應(yīng)注意什么問題如果類中定義了 _str_方法,那么當使用print打印對象時,打印出的信息是_str_方法的返回值注意點:_str_方法必須有返回值,且必須返回一個字符串類型的值3. 方法中的self代表什么類中定義的許多方法,除了之后會提到的類方法和靜態(tài)方法以外,其他任何的當被對象調(diào)用時,python解釋器都會把這個對象作為這個方法的第一個參數(shù)傳所以定義這些方法時,必須寫上第一個參數(shù),往往寫成self去接收因此在這些方法中,self就可以直接被當做當前對象來使用4. 在類中定

14、義_init_和_str_方法時,必須提供形參嗎,第一個形參又必須是self嗎為什么同上但這個參數(shù)名可以寫成別的,但往往寫成self ,便于編寫程序的人區(qū)分提示:1. _init_方法可以在創(chuàng)建對象時,為對象實現(xiàn)一些初始化的操作,提供一 些默認屬性2. _str_方法可以在使用print打印對象時,打印出_str_方法的返回值3. _str_方法必須擁有返回值,并且返回值的數(shù)據(jù)類型格式只能是字符串類型練習題4判斷以下說法是否正確,并說明理由要求:1. 類就好比一個模型,可以預(yù)先定義一些統(tǒng)一的屬性或者方法,然后通過這個模型創(chuàng)建出具體的對象True2. 類是抽象的,而對象是具體的、實實在在的一個事

15、物True3. 擁有相同(或者類似)屬性和行為的對象都可以抽像出一個類True4. 一個類只能創(chuàng)建出一個對象False通過類可以創(chuàng)建無數(shù)個不同的對象例外:使用了單例模式的,只會創(chuàng)建出一個對象(就業(yè)班課程會講解單例模式)5. _init_方法在創(chuàng)建對象時,可以完成一些初始化的操作,完成一些默認 的設(shè)定True6. 類是抽象的,而對象是具體的、實實在在的一個事物True7.str方法可以沒有返回值False必須有返回值8.str方法可以返回除字符串以外的其他類型的數(shù)據(jù)False必須返回字符串類型的數(shù)據(jù)練習題1面向?qū)ο髴?yīng)用1要求:1. 任意定義一個動物類2. 使用_init_方法,在創(chuàng)建某個動物對象

16、時,為其添加 name age、color,food 等屬性,如“熊貓”,5, “黑白”,66, “竹子”3. 為動物類定義一個run方法,調(diào)用run方法時打印相關(guān)信息,如打印出“熊貓正在奔跑”4. 為動物類定義一個get_age方法,調(diào)用get_age方法時打印相關(guān)信息,如打印出“這只熊貓今年5歲了”5. 為動物類定義一個eat方法,調(diào)用eat方法時打印相關(guān)信息,如打印出“熊貓正在吃竹子”6. 通過動物類分別創(chuàng)建出3只不同種類的動物,分別調(diào)用它們的方法,讓他們“跑起來”,“吃起來”class Animal:? ? def _init_ (self , name age, color , fo

17、od):? ? ? ? = name? #為對象設(shè)置name屬性? ? ? ? = age ? #為對象設(shè)置age屬性? ? ? ? = color ? #為對象設(shè)置color屬性? ? ? ? = food ? #為對象設(shè)置food屬性? ? # run方法? ? def run (self ):? ? ? ? print (%s正在奔跑.%? #打印年齡的方法? ? def get_age(self ):? ? ? ? print (這只 $今年3% str )? ? #吃方法? ? def eat (self ):? ? ? ? print (%s 正在吃 %s% )#貓catTom =

18、 Animal (Tom, 3, gray , fish)#老鼠mouseJerry = Animal( Jerry , 3, brown,奶酪)#狗watchdog = Animal (旺財,2, white , meat)() ()()額外知識函數(shù)在學習函數(shù)之前,首先要明白為什么要學習函數(shù)學習了函數(shù),能提高我們的工作效率,編程語言里面,離不開函數(shù)提高效率體現(xiàn)在哪里函數(shù)可以封裝一段代碼,只需要我們定義一次,就可以做到多次使用了函數(shù)是用來干什么的每一個函數(shù)都有對應(yīng)的意義,我們定義函數(shù),都是為了實現(xiàn)某種單一的功能,也就 是說,函數(shù)就是為了實現(xiàn)某種功能,實現(xiàn)某些需求的9 .定義函數(shù)那我們?nèi)绾味x函

19、數(shù)當我們調(diào)用say_hello這個函數(shù)的時候,我們能看到這樣的一句打印輸出,這就 說明這個函數(shù)被施用了 .任何一個函數(shù),必須要做到先定義(先聲明),后調(diào)用如果我們將調(diào)用提前,我們會看到:為什么因為咱們python是一門解釋性語言,代碼是從上到下一行一行執(zhí)行的,所以當代 碼運行到第一行的時候,我們調(diào)用say_hello()的時候,并沒有對應(yīng)的方法,這就 好比:我們把say_hello()當做一個做飯的功能,我們只有先做飯,才能吃飯,先 有做飯這個功能,我們才能做飯.10 . 函數(shù)的復(fù)用性下面說一下函數(shù)參數(shù)的使用,那么,在說參數(shù)之前,我們先了解一下函數(shù)的復(fù)用性, 使用函數(shù)到底好在哪里比如我有這么一

20、個需求,我想遍歷一個1-100之間所有的數(shù),這很簡單1 = 0while i =100:print ii+=1這樣我就能獲取1-100之間所有的數(shù)我們將這一段代碼封裝到一個函數(shù)里面去,這樣我們就很方便的能夠在任何地方 打印1-100之間所有的數(shù)了如果我們想在其他的頁面也打印這個1-100之間所有的數(shù),那我們還用寫這個代碼么答案是肯定不需要再寫這么多行代碼了1,確定這個函數(shù)的包名,我取的名字是utils2 .導包3 .我們來看一下控制臺能不能獲取到1-100之間所有的數(shù)也是可以的,所以說,這個函數(shù)封裝了我們一段代碼,實現(xiàn)了打印1-100之間所有 的數(shù)那我們在工作中,實際上一個大的項目是有很多重復(fù)

21、的功能的,比如聯(lián)網(wǎng)的操作, 我們不可能每次都這樣一行行的寫代碼,所以,我們把它封裝到一個函數(shù)里面,下 次想聯(lián)網(wǎng)獲取直接調(diào)用我們寫好的函數(shù)就行了 ,這就是函數(shù)的好處,復(fù)用性,這就 是函數(shù)的可多次調(diào)用.11. 函數(shù)的參數(shù)言歸正傳,我們來說說函數(shù)參數(shù)的使用剛剛我們已經(jīng)能夠獲取到1-100之間所有的數(shù)了,但是我們現(xiàn)在改需求了,我們 希望能夠獲取100-200之間的所有的數(shù),這個怎么辦呢這個也很簡單我們再定義一個函數(shù)traverse1(),初始值改成100,當滿足小于等于200的情況 打印就行了ok,沒問題,那我現(xiàn)在再改需求了,我希望打印出200到400之間所有的數(shù),怎么辦 也很簡單:那我如果再改需求,

22、我想打印10-50之間的所有數(shù),我是不是又要定義一種方法 traverse3()顯然,我們發(fā)現(xiàn),其實這幾個函數(shù),相似的地方還是挺多的我們僅僅只是改變了i的初始值,以及while i = 多少的一個值而已,這樣的代碼,顯然是過于死板的, 我們需要把這個代碼寫活,這里,我們就用到了參數(shù)了實際上,如果我們i的初始值和我們循環(huán)的條件i=多少的值要是能隨心所欲的 根據(jù)我們自己的需求變化就好了 ,所以這里,我定義了兩個變量,一個是m一個是n,m表示循環(huán)的初始值,n表示你 循環(huán)的終止值,也就是i=n我們循環(huán)的條件如果我們想遍歷100-200之間的所有數(shù),那我們傳進來100,200就能夠代替這個 m,n的值就好了,這里,咋們函數(shù)提供了這樣的一種方式我們把100這個值傳給了 m,200這個值傳給了 n那么i = 100while i = 200:我們就能打印出100到200之間所有的數(shù)了,現(xiàn)在,我希望打印200-300之間的數(shù),就可以直接使用就行了一行代碼就搞定了,所以說,有參數(shù)的函數(shù)是靈活的那么參數(shù)又分為形參和實參:在函數(shù)上定義的參數(shù)只是一個占位符,被稱為形式參數(shù),簡稱形參在調(diào)用時傳入的參數(shù)是具體的內(nèi)容,被稱為實際參數(shù),簡稱實參m和n僅僅只是一個占位而已,我們?nèi)绻粋髦颠M來,是沒有任

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論