面向對象介紹

面向對象介紹

來自專欄小白Python學習記錄

面向對象編程介紹

想一想請用程序描述如下事情A同學報道登記信息B同學報道登記信息C同學報道登記信息A同學做自我介紹B同學做自我介紹C同學做自我介紹stu_a = { "name":"A", "age":21, "gender":1, "hometown":"河北"}stu_b = { "name":"B", "age":22, "gender":0, "hometown":"山東"}stu_c = { "name":"C", "age":20, "gender":1, "hometown":"安徽"}def stu_intro(stu): """自我介紹""" for key, value in stu.items(): print("key=%s, value=%d"%(key,value))stu_intro(stu_a)stu_intro(stu_b)stu_intro(stu_c)

考慮現實生活中,我們的思維方式是放在學生這個個人上,是學生做了自我介紹。而不是像我們剛剛寫出的代碼,先有了介紹的行為,再去看介紹了誰。用我們的現實思維方式該怎麼用程序表達呢?

面向過程和面向對象

面向過程:根據業務邏輯從上到下寫代碼

面向對象:將數據與函數綁定到一起,進行封裝,這樣能夠更快速的開發程序,減少了重複代碼的重寫過程

面向過程編程最易被初學者接受,其往往用一長段代碼來實現指定功能,開發過程的思路是將數據與函數按照執行的邏輯順序組織在一起,數據與函數分開考慮。

類和對象

面向對象編程的2個非常重要的概念:類和對象

對象是面向對象編程的核心,在使用對象的過程中,為了將具有共同特徵和行為的一組對象抽象定義,提出了另外一個新的概念——類

類就相當於製造飛機時的圖紙,用它來進行創建的飛機就相當於對象

1、類

人以類聚 物以群分。

具有相似內部狀態和運動規律的實體的集合(或統稱為抽象)。

具有相同屬性和行為事物的統稱

類是抽象的,在使用的時候通常會找到這個類的一個具體的存在,使用這個具體的存在。一個類可以找到多個對象

2、對象

某一個具體事物的存在 ,在現實世界中可以是看得見摸得著的。

可以是直接使用的

3、類和對象的關係

小總結:類就是創建對象的模板

4、區別類和對象

賓士汽車 賓士smart 張三的那輛賓士smart 對象 大黃狗 李四家那隻大黃狗 對象 水果 蘋果 紅蘋果 紅富士蘋果 我嘴裡吃了一半的蘋果 對象

5、類的構成

類(Class) 由3個部分構成

類的名稱:類名

類的屬性:一組數據

類的方法:允許對進行操作的方法 (行為)

<1> 舉例:

1)人類設計,只關心3樣東西:

事物名稱(類名):人(Person)

屬性:身高(height)、年齡(age)

方法(行為/功能):跑(run)、打架(fight)

2)狗類的設計

類名:狗(Dog)

屬性:品種 、毛色、性別、名字、 腿兒的數量

方法(行為/功能):叫 、跑、咬人、吃、搖尾巴

6、抽象的類

如何把日常生活中的事物抽象成程序中的類?

擁有相同(或者類似)屬性和行為的對象都可以抽像出一個類

方法:一般名詞都是類(名詞提煉法)

<1> 坦克發射3顆炮彈轟掉了2架飛機

坦克--》可以抽象成 類

炮彈--》可以抽象成類

飛機-》可以抽象成類

<2> 小明在公車上牽著一條叼著熱狗的狗

小明--》 人類

公車--》 交通工具類

熱狗--》 食物類

狗--》 狗類

定義一個類

class 類名: 方法列表例子# 定義類class Car: # 方法 def getCarInfo(self): print(車輪子個數:%d, 顏色%s%(self.wheelNum, self.color)) def move(self): print("車正在移動...")說明1.定義類時有2種新式類和經典類上面的Car為經典類如果是Car(object)則為新式類2.類名 的命名規則按照"大駝峰"

創建對象

創建對象的格式為: 對象名 = 類名()例子# 定義類class Car: # 移動 def move(self): print(車在奔跑...) # 鳴笛 def toot(self): print("車在鳴笛...嘟嘟..")# 創建一個對象BMW = Car()

作者贈言:

面向對象變成對於後期的學習非常重要

也是非常重要的一部分,後期的會詳細講解面向對象編程

微信公眾號:小白Python學習記錄

上一期答案:

推薦閱讀:

寫了那麼久代碼了,給大家談談我怎麼理解編程
C/C++ 中的static關鍵字
Filedescriptor out of range in select
乾貨 | 全面深入理解 Python 面向對象
html5可以做什麼?HTML5市場需求有哪些?

TAG:編程語言 | Python入門 | Python教程 |