您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python面向對象思想與應用的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
面向對象思想
1、面向對象的設計思想
面向對象是基于萬物皆對象這個哲學觀點。
2、面向對象和面向過程的區別
面向過程
在生活中:
它是一種看待問題的思維方式,在思考問題的時候,著眼問題是怎樣一步一步解決的,然后親力親為去解決問題[類似于公司里的執行者]。
在程序中:
代碼是從上而下順序執行,各個模塊之間的關系盡可能簡單,在功能上相對獨立,程序的流程在寫程序的時候就已經決定。
面向對象
在生活中:
它是另一種看待問題的方式,它著眼于找到一個具有特殊功能的個體,然后委托這個個體去幫你完成某件事.這更符合人類思考習慣的思想[指揮者]。
在程序中:
把數據以及對數據的操作方法放在一起,作為一個相互依存的整體–對象;
把同類的對象進行抽象出其共性,形成類;
類中大多數數據,只能用本類的方法進行處理;
類通過一個簡單的外部接口與外界發生關系,對象與對象之間通過消息進行通信;
程序執行的流程由用戶在使用的過程中決定;
使用面向對象思想進行開發,需要先找到具有所需功能的對象來使用,如果這個對象不存在,那么則需要創建這么一個具有所需功能的對象。
注意:面向對象只是一種思想,并不是一門編程語言。
區別總結
a. 都是看待問題的一種思維方式,都能解決問題;
b. 面向過程著眼于所有的事情親力親為;
c. 面向對象著眼于找到一個具有特殊功能的對象,委托這個對象實現你需要實現的功能。python語言是面向對象的程序設計語言,類和對象是面向對象的核心。
類和對象
1、類和對象的概念
類:一個具有特殊功能的實體的集合[群體]。
對象:在一個類中,一個具有特殊功能的實體,能夠幫忙解決特定的問題,對象通常也被稱為實例。
兩者之間的關系:類用于描述某一對象的共同特征,而對象則是類的具體存在。
舉例:
學生 張三、李四
快遞 順豐、韻達總結:
類與對象的關系:
a.類是對象的抽象,對象是類的具體體現。
b.類也是一種數據類型,只不過是自己定義的,類似與number,string等,它本身并不占用空間,但是它的實例[對象]是占用空間的。
2、類的定義
格式:
class 類名(object): 類體
說明:
a.python中使用class關鍵字定義類;
b.類名只要是一個合法的標識符即可,命名規則遵循”大駝峰式命名”【每個單詞的首字母大寫】;
c.盡量使用單個或者多個有意義的單詞連接而成
演示
# 一個簡單的類的實例 class Person(): print("hello")
3、類的設計
只需要關心3樣東西
1.事物名稱[類名]: 如人類 (Person);
2.特征(屬性): 如身高(height) 年齡(age)等 ——>名詞;
3.行為(方法): 如跑(run) 說話(say) —————>動詞。
類中的方法和屬性
1、方法和屬性的定義
生活中描述事物的無非就是描述事物的特征和行為。
python中用類來描述事物也是如此,前面已經定義了類,但是,如果只有類單獨存在,沒有任何意義,所以定義類其實就是定義類中的成員[成員變量和成員方法]。
在類中的變量我們稱之為成員變量,在類中的方法我們稱之為成員方法(函數)。
成員變量—>類具有的特征 例如:人—>身高,性別,體重。
成員方法 —>類具有的行為 例如人—>吃喝玩樂。
因此,擁有相同的(或者類似)屬性和行為的對象都可以抽取出一個類。
class Persion(): #成員變量,初始值就是相當于默認值 name = "" age = 0 height = 0 weight = 0 #成員方法 #在類的內部,使用def關鍵字來定義的一個方法 #注意:區別于普通方法,類中方法的參數必須包含參數self,且為第一個參數 #self代表類的實例(某個對象) def run(self): print("run") def eat(self, food): print("eat",food) def sleep(self): print("sleeping")
說明:定義了類,并在類中定義了成員變量和成員方法,但是成員變量和成員方法是如何使用的呢?
2、方法和屬性的使用
2.1、實例化對象:
前面說過,對象是實實在在的個體,負責去完成某件指定的事情。
對象的創建的過程又被稱作對象的實例化過程。
語法:
對象名 = 類名()
''' 實例化對象 格式: 對象名 = 類名() 注意: 沒有參數的時候,小括號也不能省略 ''' #實例化一個對象 pre1 = Person() print(pre1) print(type(per1)) print(id(per1)) per2 = Person() print(per2) print(type(per2)) print(id(per2))
3、對象調用方法和屬性
per = Preson() ''' 訪問屬性 格式:對象名.屬性名 賦值:對象名.屬性名 = 新值 ''' per.name = 'lili' per.age = 18 per.height = 160 per.weight = 80 print(per.name, per.age, per.height, per.weight) ''' 訪問方法 格式:對象名.方法名(參數列表) ''' per.run() per.eat("apple") per.sleep() #問題:目前來看Person創建的所有對象屬性都是一樣的 per2 = Person() print(per2.age) per3 = Person() print(per3.age)
總結:
訪問變量采用: 對象名.屬性名;
訪問方法采用: 對象名.方法名(參數列表)。
4、內存中的對象
per = Person()
說明:程序中定義Person類型的變量per實際是一個變量名,它被存放在棧內存中,它指向實際的Person對象,而真正的Person對象則存放在堆內存中。
綜合練習:
第一天開學,介紹一下你自己其中包括姓名,年齡以及愛好
#學生類 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() # 成員方法調用 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面向對象思想與應用的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。