Python 面向對象和面向過程對比
阿新 • • 發佈:2018-12-18
面向過程 對比 代碼量 print ssa num 可維護 清晰 elephant
# 大象裝冰箱 # 腳本, 此時代碼是最簡單的. 不需要構思整個程序的概況 print("開門") print("裝大象") print("關門") # 函數式編程. 比腳本麻煩. 對功能有了概況. def kai(): print(‘開門‘) def zhuang(): print("裝大象") def guan(): print(‘關門‘) kai() zhuang() guan() # 面向對象編程, 對整個系統進行分析. 分析出需要哪些對象. 然後給對象進行歸類. # 先寫類. 然後使用類創建對象. 最後用對象去執行相關的操作 class Elephant: def __init__(self): print("創建了一個大象") def kai(self): print("開門") def zuan(self): print("大象進冰箱") def guan(self): print("大象把門帶上") # dx = Elephant() dx.kai() dx.zuan() dx.guan() # 第一回合 # 腳本勝 # 函數側重的是功能 # 面向對象側重的是 歸類 # PK2 # # 小豬佩奇. 使用嘴巴嘟嘟技能攻擊 超人 # # 小豬佩奇. 使用嘴巴嘟嘟技能攻擊 蝙蝠俠 # # 小豬佩奇. 使用嘴巴嘟嘟技能攻擊 蜘蛛俠 # # # 面向過程: 代碼非常的冗余. 尤其是參數 def fight_superman(name, jineng): print("%s使用%s攻擊超人" % (name, jineng)) def fight_batman(name, jineng): print("%s使用%s攻擊蝙蝠俠" % (name, jineng)) def fight_spiderman(name, jineng): print("%s使用%s攻擊蜘蛛俠" % (name, jineng)) # # fight_superman(‘小豬佩奇‘, "嘴巴嘟嘟") fight_batman(‘小豬佩奇‘, "嘴巴嘟嘟") fight_spiderman(‘小豬佩奇‘, "嘴巴嘟嘟") # # class Pig: def __init__(self, name, jineng): self.name = name self.jineng = jineng def fight_superman(self): print("%s使用%s攻擊超人" % (self.name, self.jineng)) def fight_batman(self): print("%s使用%s攻擊蝙蝠俠" % (self.name, self.jineng)) def fight_spiderman(self): print("%s使用%s攻擊蜘蛛俠" % (self.name, self.jineng)) # # pg = Pig("小豬佩奇", "嘴巴嘟嘟") # # 不需要向原來一樣傳遞一樣的參數了 # # 面向對象的程序: 結果相對清晰. 缺點: 代碼量比原來大, 上手太難 pg.fight_batman() pg.fight_spiderman() pg.fight_superman() # 如果寫一個定時任務, 半夜12點. 給老板發送財務報表(一張圖) def send_email(address, name, title, content): print("發送郵件") def send_wechat(wechat_num, name, title, content): print("發送微信") def send_chat(wechat_num, name, title, content): print("發送短信") def send_dd(wechat_num, name, title, content): print("發送釘釘") def send_oa(wechat_num, name, title, content): print("發送OA") class Messager: def __init__(self, name, title, content): self.name = name self.title = title self.content = content def send_email(self, address): print("發送郵件") def send_wechat(self, wechat_num): print("發送微信") def send_chat(self, phone_num): print("發送短信") def send_dd(self, dd_num): print("發送釘釘") def send_oa(self, oa_num): print("發送OA") # 用面向對象就比面向過程稍微好一些. # 可維護性比原來好 # python同時支持面向對象和面向過程: # 面向過程: 應用程序相對比較小. 不需要大規模的設計 # 面向對象: 程序非常大. 項目管理 維護成本很高. 此時更適合用面向對象(結構) # java : 純面向對象 => 可以把一個微型項目. 做成巨型項目
Python 面向對象和面向過程對比