我們之前的學習都叫做面向過程的
面向過程和物件導向是兩種不同的程式設計方式
對比面向過程的特點,可以更好地 了解什麼是物件導向
則麼做?
把完成某乙個需求的所有步驟從頭到尾逐步實現
根據開發複雜,**會變得很複雜
最後完成**,就是順序地呼叫不同的函式
特點:注重步驟與過程,不注重職責分工
如果需求複雜,**會變得很複雜
開發複雜專案,沒有固定的套路,開發難度大
物件導向——誰來做?
相比較函式,物件導向是更大的封裝,根本職責在乙個物件中封裝多個方法1.在完成某個需求前,首先確定職責——要做的事情(方法)
2.根據職責確定不同的物件,在物件內部封裝不同的方法(多個)
3. 最後完成的**,就是順序的讓不同的物件呼叫不同的方法
特點1.注意物件和職責,不同的物件承擔不同的職責
在程式開發中,應該先有類,再有物件類只有乙個,物件可以有很多個,但是不同的的物件屬性各不相同
類中定義了什麼屬性和方法,物件就有什麼屬相和方法,也不可能少
第一步:需求分析:考慮需要多少個類
第二步:設計乙個類需要滿足三個要素
類名起名必須遵循大駝峰命名法
每個單詞首字母大寫
單詞與單詞之間沒有下劃線 屬性
方法名詞提煉法分析整個業務流程,提出的名詞,通常就是找到的類
需求:小明今年十八歲,身高1.73 每天早晨跑完步回去吃早點
小紅今年十七歲,身高1.60,小紅不跑步,小紅喜歡吃東西
物件導向是更大的封裝,在乙個類中封裝多個方法,這樣通過這個類建立出來的物件,就可以直接呼叫這些方法
定義只包括方法的類
語法:
class 類名:
def 方法1
(self,引數列表)
:pass
def 方法1
(self,引數列表)
:pass
注意:建立物件當乙個類定義完成以後,用這個類來建立物件,語法格式如下:與之前學的函式幾乎一樣,區別在於第乙個引數必須是self
命名必須是大駝峰命名法
物件變數=類名()
第乙個物件導向程式需求:小貓愛吃魚,小貓愛喝水
貓類,方法:吃喝
class
cat:
defeat
(self)
:print
('小貓愛吃魚'
)def
drink
(self)
:print
('小貓愛喝水'
)tom=cat(
)tom.eat(
)tom.drink(
)
引用的概念:在python中使用類建立物件之後,tom變數中仍然記錄的是物件在記憶體中的位址
也就是tom引用了新建的貓物件
使用print輸出物件變數,預設情況下,是能夠輸出這個變數引用的物件室友哪個類建立的物件,以及在記憶體中的位址(十六進製制表示)
class
cat:
defeat
(self)
:print
('小貓愛吃魚'
)def
drink
(self)
:print
('小貓愛喝水'
案例改造——給物件增加屬性
在python中,要給物件設定屬性,但不推薦使用
物件屬性的封裝應該封裝在類的內部
只需要在類的外部**中之傑通過,設定乙個屬性即可
如何輸出新增的屬性?
class
cat:
defeat
(self)
:print
('%s愛吃魚'
%self.name)
defdrink
(self)
:print
('小貓愛喝水'
)tom=cat(
)tom.name=
"tom"
tom.eat(
)# tom愛吃魚
tom.drink(
)# 小貓愛喝水
print
(tom)
# <__main__.cat object at>
Day14 物件導向
面向過程思想 步驟清晰簡單,第一步做什麼,第二步做什麼.面對過程適合處理一些較為簡單的問題 物件導向思想 物以類聚,分類的思維模式,思考問題首先會解決問題需要哪些分類,然後對這些分類進行單獨思考。最後,才對某個分類下的細節進行面向過程的思索 物件導向適合處理複雜的問題,適合處理需要多人協作的問題!對...
Python專案 Day14 物件導向
動態新增屬性 刪除屬性 class person def init self self.age 1 p1 person p2 person p1.gender male person.nation china del p1.gender del p1.nation error nation屬於類的,...
python成長之路day14
1 什麼是裝飾器 器指的是工具 裝飾指的是為被裝飾物件新增額外的功能 大白話 定義裝飾器就是定義了乙個函式,該函式就是用來為其他函式新增額外的功能 2 為何要用裝飾器 程式的開發徐亞哦遵循乙個原則 開放封閉原則 開放 值得是對拓展功能開放 封閉 指的是對修改源 封閉 def func sdfasd ...