一、什么 是面向?qū)ο?/h1>
面向?qū)ο缶褪且环N編程思想[處理問題的思路]
面向過程編程:面向~設身處地換位思考--面向過程
開發(fā)人員->當要完成某件事需要按照什么樣的操作步驟進行操作;將這樣的操作步驟封裝到函數(shù)中诬留,通過函數(shù)可以調(diào)用執(zhí)行;這樣的開發(fā)操作~代碼中封裝了大量的包含處理函數(shù)的步驟---面向過程編程用來解決一個問題颁褂,如果改一個組件故响,牽一發(fā)而動全身
優(yōu)點是:極大降低了程序的復雜度
缺點是:一套流水線或者流程用來解決
面相對象的程序設計的核心是對象。通過對象和對象之間的交互寫作完成項目功能的開發(fā)颁独。通過對象和對象之間的交互協(xié)作完成項目功能的開發(fā)
面向?qū)ο螅好嫦虿式欤粚ο?/h6>
面向?qū)ο缶幊蹋簩㈨椖恐行枰母黝悢?shù)據(jù)類型、功能封裝成對象誓酒、函數(shù)樟蠕;通過對象、函數(shù)之間的相互協(xié)作靠柑,完成功能開發(fā)
二寨辩、類和對象的區(qū)別
類型 vs 對象
類:類型的簡稱,數(shù)據(jù)類型的簡稱歼冰;是一堆具有共同屬性和相似行為的對象的抽象是一個概念靡狞、一個稱呼、一個類型
對象:一種類型有具體數(shù)據(jù)的實體[實際存在的物體]隔嫡;是某種類型下一個有具體特征數(shù)據(jù)和操作方法的 實體對象對象有具體的數(shù)據(jù)甸怕!
1.類型:代碼中可以通過class關(guān)鍵字甘穿,自定義一個數(shù)據(jù)類型
(1)數(shù)據(jù)類型:簡稱類型:簡稱類-> 自定義數(shù)據(jù)類型-> 自定義 類
(2)基本語法:
class 類型名稱:
類型中的代碼
(3)類型名稱命名規(guī)范:見名知意、駝峰命名法[一個或者多個英文單詞組成梢杭、每個單詞首字母大寫]
(4)類型:通過項目中需要的大量有相似特征和行為的對象温兼,抽象出來的一個數(shù)據(jù)類型
2.對象:
對象:有具體特征和行為操作的事物
代碼:有具體(特征)屬性和(行為)方法的對象-> 事物
3. 類型 VS 對象 區(qū)別?
類型:通過對象抽象出來的一個數(shù)據(jù)類型
類型中需要定義對象需要的特征[屬性|變量]和行為[方法]
class Person:
# 定義屬性武契、特征
# 固定寫法:在__init__方法中募判,定義類型的屬性
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# 定義方法、行為
def eat(self, food):
print("吃飯了")
(1)數(shù)據(jù)類型:簡稱類型:簡稱類-> 自定義數(shù)據(jù)類型-> 自定義 類
(2)基本語法:
class 類型名稱:
類型中的代碼
(3)類型名稱命名規(guī)范:見名知意、駝峰命名法[一個或者多個英文單詞組成梢杭、每個單詞首字母大寫]
(4)類型:通過項目中需要的大量有相似特征和行為的對象温兼,抽象出來的一個數(shù)據(jù)類型
對象:有具體特征和行為操作的事物
代碼:有具體(特征)屬性和(行為)方法的對象-> 事物
類型:通過對象抽象出來的一個數(shù)據(jù)類型
類型中需要定義對象需要的特征[屬性|變量]和行為[方法]
class Person:
# 定義屬性武契、特征
# 固定寫法:在__init__方法中募判,定義類型的屬性
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# 定義方法、行為
def eat(self, food):
print("吃飯了")
注意1:class 關(guān)鍵字咒唆,用來聲明定義一個類型届垫,固定寫法
注意2:類型中的所有函數(shù),第一個參數(shù)self表示當前對象全释,類似生活中的一個名詞:我
注意3:類型中的函數(shù)敦腔,必須稱為方法;
函數(shù) VS 方法 : 兩個東西
方法是一種特殊的函數(shù)恨溜,只能在類型中使用符衔!
注意4:類型中方法,第一個參數(shù):指代的是當前對象~~~一般被聲明為self
表示當前對象糟袁,調(diào)用的時候不需要傳遞數(shù)據(jù)給self判族!
對象:某中類型一個具體存在的事物
代碼中的對象,需要通過類型來創(chuàng)建
如:tom = Person('湯姆', 18, '男')
通過 類型名稱() 的方式創(chuàng)建對象
創(chuàng)建對象時项戴,自動調(diào)用執(zhí)行init()方法形帮,將對象需要的數(shù)據(jù)傳遞過去
有了對象,就可以執(zhí)行對象的行為:調(diào)用對象的方法
通過 對象的變量.方法()直接調(diào)用
tom.eat("魚香肉絲")
三周叮、類的聲明定義語法操作
1.聲明定義類型
使用 class 語句來創(chuàng)建一個新類辩撑,class 之后為類的名稱并以冒號結(jié)尾:
通過class 關(guān)鍵字進行定義
class 數(shù)據(jù)類型名稱:
類型中的代碼
example:
# 創(chuàng)建一個Person類型
class Person:
pass
----------------------------------
- 類型的聲明
通過class 關(guān)鍵字直接聲明定義一個自定義類型
語法:
class 數(shù)據(jù)類型名稱:
pass
- 類型:專門用來創(chuàng)建對象
創(chuàng)建對象:包含具體數(shù)據(jù)的實體
語法:
變量 = 數(shù)據(jù)類型()
2.初始化類型的屬性
3.定義類型的方法
四、對象的創(chuàng)建仿耽、屬性的調(diào)用合冀、方法的調(diào)用
對象的創(chuàng)建和使用
創(chuàng)建對象
變量 = 類型名稱()
tom = Person()
tom:變量,存儲了Person()對象的內(nèi)存地址
--對象的引用變量【變量中存放的是可以引用到對象的內(nèi)存地址】
使用對象:直接通過變量操作對象
print(type(tom))--> <class '__main__'.Person>
對象的行為项贺,分析~是否和對象本身的數(shù)據(jù)有關(guān)君躺!
生活:分析~行為是否跟自己的身份和責任有關(guān)!
對象的行為:對象的方法:就是一個普通函數(shù)的升級
將一個函數(shù)开缎,定義在類型的內(nèi)部棕叫,第一個參數(shù)~設置為可以接受對象的參數(shù):self
創(chuàng)建一個作者對象類型
class Author:
pass
# 定義一個行為:個人介紹
def introduction(self):
print("個人介紹.........")
調(diào)用執(zhí)行方法:類似與調(diào)用執(zhí)行函數(shù)
方法的調(diào)用執(zhí)行:必須通過對象的引用變量進行調(diào)用!
# 創(chuàng)建對象
author = Author()
author.introduction()