python之路--初識面向物件
1. 初識面向物件
面向過程:
一切以事務的發展流程為中心.
面向物件:
一切以物件為中心. 一切皆為物件. 具體的某一個事務就是物件
打比方:
大象進冰箱
步驟: 第一步, 開門, 第二步, 裝大象, 第三步, 關門
面向物件:大象, 你進冰箱.
此時主語是大象. 我操縱的是大象. 此時的大象就是物件
2. 類. 物件
類: 就是圖紙. 建立物件的第一步. 先畫圖紙. 先寫類.
物件: 物件就是車. 通過圖紙造出來的具體的東西. 通過類來建立物件
類與物件的關係:
類是對xxx事物的歸類.
寫:
__init__(self, 引數) 引數一般作為屬性設定給物件. 物件就是self, 對屬性的封裝.
def 方法(self, 引數): 方法. 第一個引數一般是固定的self. 當前類的物件.
pass
物件是xx型別的一個具體
建立物件: 類名()
建立類:
class 類名:
def __init__(self): # 初始化方法. 又被成為構造方法
self.屬性 = 值
self.屬性 = 值
self.屬性 = 值
def fangfa(self):
方法體(函式體, return)
建立物件:
變數 = 類名() # 例項化 <-> 建立物件
變數.屬性 # 訪問物件的屬性資訊
變數.方法() # 訪問類中的方法
class Hero: def __init__(self, waihao, name, story): self.waihao = waihao self.name = name self.story = story def q(self): print("拎著寶劍嗷嗷跑") def w(self): print("護盾") def e(self): print("電風扇") def r(self): print("大寶劍") gw = Hero("德瑪西亞之力", "蓋倫", "500年前蓋倫拿一個破棍子捅破了玉皇大帝的尿壺...埋在五指山下") gw.q() gw.w() gw.r()
class Phone: def __init__(self, color, dianchi, num, price): self.color = color self.dianchi = dianchi self.num = num self.price = price def call(self, ren): print("使用我的%s顏色價值%s的電話打給%s" % (self.color, self.price, ren)) def play(self): print("電話可以打遊戲") sj = Phone("黑色", "5W安", "110", "9W歐元") sj.call("劉德華") sj.play()
3. 面向物件和麵向過程的對比
如果寫一些比較小的程式用面向過程.
程式很複雜. 很龐大建議用面向物件.
4. 面向物件的三大特徵
封裝:
1. 對屬性的封裝(__init__())
self.xxx = xxx
2. 對方法和功能的封裝
繼承
子類自動擁有父類中除了私有內容外的其他所有內容
class Bar(Foo): Bar對Foo進行了擴充套件
pass
當出現x是一種y的時候. 推薦使用繼承關係
python支援多繼承. 查詢順序: 先找離他近的.
多型(python原生直接就是多型)
python更多的支援的是鴨子模型, 只要會嘎嘎叫就是好鴨子