Python第十七课(面向对象基础)
Python第17課(面向?qū)ο蠡A)? ? >>>思維導圖>>>中二青年
面向?qū)ο缶幊趟枷隣OP
什么是面向?qū)ο?/strong>
面向?qū)ο笫且环N編程思想,是前輩們總結(jié)出的經(jīng)驗,指導程序員如何編寫出更好的程序,核心是對象,程序就是一系列對象的集合,程序員負責調(diào)度控制這些對象來交互著完成任務案例1?把大象裝進冰箱? 面向過程: 1.打開冰箱 2.裝入大象 3.關閉冰箱? 面向?qū)ο? 找個具備裝大象的技能的對象在面向?qū)ο笾谐绦騿T的角度發(fā)生改變,從具體的操作者變成了指揮者 強調(diào):對象不是憑空產(chǎn)生的,需要我們自己設計案例2?西天取經(jīng)如來有一堆破書要傳出去,他沒有自己干,而是找了五個對象幫他去干,?如來只要負責控制調(diào)度的對象即可,如果某個對象發(fā)生變化,也不會影響其他的對象?,?擴展性案例3?曹操吟詩喝酒吃肉,人生真爽喝酒吃肉,人生幾何對酒當歌,人生幾何面向?qū)ο笕髢?yōu)點
1.擴展性2.靈活性3.重用性缺點
1.程序的復雜度提高了 2.無法準確預知結(jié)果使用場景:
????對擴展性要求較高,通常是直接面向用戶的,例如:QQ,微信
面向過程編程思想
關注的核心是過程,過程是就是一步一步的執(zhí)行步驟,既先干啥在干啥 優(yōu)點:邏輯清晰 , 復雜問題簡單化,流程化 缺點: 擴展性差,可維護性差 使用場景:對擴展性要求較低的程序例如:系統(tǒng)內(nèi)核,git,計算器 記住:不是所有程序都要面向?qū)ο?得分析具體需求類和對象
類:即類型,類別,是一種抽象概念,是一系列具備相同特征和相同行的對象的集合
對象:就是具體存在的某個事物,具備自己的特征和行為,對象就是特征和技能的結(jié)合體
類和對象的關系
類包含一系列對象,對象屬于某個類在生活中是先有對象再有類,而在程序中是先有類才能有對象,我們必須先告訴計算機這類的對象有什么特征有什么行為總結(jié)出一個結(jié)論:在使用面向?qū)ο缶幊虝r,第一步就是思考需要什么樣的對象,對象具備什么樣的特征和行為,從而根據(jù) 這些信息總結(jié)出需要的類型創(chuàng)建類和對象
定義類的語法
class 類的名稱:# 類中的內(nèi)容 描述屬性和技能 #描述屬性用變量#描述行為用函數(shù) #類名稱 書寫規(guī)范 首先是見名知意 名稱是大駝峰命名法 #駝峰就是單詞首字母大寫 , 大駝峰是第一個字母大寫,小駝峰是第一個字母小寫創(chuàng)建對象的語法
class Person:pass#創(chuàng)建對象 p = Person()屬性的寫法
屬性可以寫在類中? 類中的屬性,是所有對象公共的?也可以寫在對象中? 對象中的屬性,是每個對象獨特的(不一樣的)如果類中和對象中存在同樣的屬性,先訪問對象 如果沒有在訪問類練習: 描述一個老師類 需要包含 一個公共屬性和 一個獨特的屬性?
class Teacher:school = "oldboy"t1 = Teacher() t1.name = "jack" t1.age = 28屬性的增刪改查
增加屬性? 對象變量名稱.屬性名稱 = 屬性值刪除屬性 del 對象的變量名稱.屬性名稱?修改 對象.屬性 = 新的值?查看屬性? 訪問的是對象的所有屬性? print(對象.__dict__)訪問對象的類信息 print(對象.__class__)init方法
叫做初始化方法,本質(zhì)上就是一個函數(shù)特點1: 當實例化 對象時,會自動執(zhí)行init方法特點2:會自動將對象作為第一個參數(shù)傳入,參數(shù)名稱位self ,self可以是別的名字,但不建議改功能:用戶給對象賦初始值練習:創(chuàng)建一個類具備幾個屬性,通過初始化方法來給他設置屬性
class Dog:def __init__(self,kind,color,age):self.kind = kindself.color = colorself.age = aged1 = Dog("二哈","黑白",1) d1 = Dog("泰迪","棕色",2)# 注意:該函數(shù)不能有任何返回值/.... 只能是None 規(guī)定如此..對象的精髓就是講數(shù)據(jù)和處理數(shù)據(jù)的函數(shù)整合到一起 ,這樣一來拿到一個對象就同時拿到了需要處理的數(shù)據(jù)以及處理數(shù)據(jù)的函數(shù)
對象的綁定方法
默認情況下類中的方法都是對象綁定方法 其特殊之處在于, 當使用對象調(diào)用該函數(shù)時會自動傳入對象本身,作為第一個參數(shù) ? 當使用類名來調(diào)用時他就是一個普通函數(shù),有幾個參數(shù)就得傳幾個參數(shù)練習:寫一個學生類,具備一個打招呼的技能 要能輸出自己的名字信息
class Student:def __init__(self,name):self.name = namedef say_hi(self):print("hello my name is %s" % self.name)類的綁定方法
類綁定方法用@classmethod來裝飾 特殊之處:不管用類還是對象調(diào)用,都會自動傳入類本身,作為第一個參數(shù) 什么時候綁定給對象:當函數(shù)邏輯需要訪問對象中的數(shù)據(jù)時 什么時候綁定給類:當函數(shù)邏輯需要訪問類中的數(shù)據(jù)時非綁定方法
或叫做靜態(tài)方法,就是即不需訪問類的數(shù)據(jù),.也不需要訪問對象的數(shù)據(jù),不常用
語法:@staticmethod
轉(zhuǎn)載于:https://www.cnblogs.com/renvip/p/11239449.html
總結(jié)
以上是生活随笔為你收集整理的Python第十七课(面向对象基础)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑马程序员java学生管理系统
- 下一篇: appium+python自动化项目实战