1.面向過程程式設計
一遇到問題馬上想到的是怎麼用演算法或者步驟(邏輯)直接解決問題
2.函式式程式設計
一遇到問題馬上想到有沒有乙個函式具有解決這個問題的功能,如果有直接拿過來用,沒有就自己定義乙個
3.物件導向程式設計
遇到問題馬上想到有沒有乙個物件具有解決這個問題的能力,如果有直接拿過來用,沒有就建立乙個 - 類和物件
1.什麼是類,什麼是物件
類就是擁有相同功能和相同屬性的物件的集合 - 抽象的概念
物件就是類的例項 - 具體的表現
例如:人是類,我就是物件,軒軒也是物件
2.定義類 - 用**描述清楚這個類是擁有哪些相同功能和哪些相同屬性的物件集合
語法class 類名:
類的說明文件
類的內容
說明class - 關鍵字,固定寫法
類命 - 程式設計師自己命名;
要求:是識別符號,不是關鍵字
規範:駝峰式命名並且首字母大寫,見名知義;不使用系統的函式名、型別名、模組名
類的說明文件 - 本質就是使用三個雙引號開頭和結尾的注釋
類的內容 - 主要包括方法(物件方法、類方法和靜態方法)和屬性
方法:本質就是定義在類中的函式,是用來對類的功能進行描述
屬性:本質就是在類中儲存資料的變數,是用來對類的屬性進行描述
3.定義物件
類名()
class
person
:"""
描述類的內容和使用說明
"""defsleep
(self)
:print
('人在睡覺'
)def
eat(self)
:print
('人在吃飯')
p1 = person(
)p2 = person(
)print
(p1, p2)
1.物件方法
方法就是定義在類中的函式
什麼是物件方法
怎麼定義:直接定義在類中的函式
怎麼呼叫:通過 『物件.方法名』 的形式來呼叫
特點是什麼:自帶引數self,用物件呼叫方法的時候引數self不需要傳參,系統會自動將當前物件傳給self
(self:誰呼叫就指向誰)
class
dog:
defeat
(self, food=
'骨頭'):
print
(f'狗在吃'
)# 建立乙個dog類的物件儲存在d1中
d1 = dog(
)# 通過物件呼叫物件方法
d1.eat(
)d1.eat(
'?')
1.建構函式(方法)
函式名和類名同名,專門用來建立物件的函式就是建構函式(方法)
python在定義類的時候,系統會自動建立這個類對應的建構函式;
python中呼叫建構函式建立物件的時候內部會完成3個步驟:
a.呼叫__new__方法建立物件
b.用建立好的物件呼叫__init__方法,對物件進行初始化操作
c.返回初始化完成後的物件
2.init__方法
魔法方法:類中用__開頭和__結尾的方法就叫魔法方法
魔法方法不需要程式設計師主動呼叫,系統會在特定情況下自動呼叫
init:
1)每次通過類建立物件的時候,系統都會自動呼叫這個方法;
2)建立物件的時候建構函式有沒有引數,有幾個,看對應的__init__方法除了self以外有沒有額外的引數,有幾個
3)如果需要給類新增init方法主要保證方法名是__init,以及方法的性質是物件方法就可以了
1.屬性
類中的屬性分為:類屬性和物件屬性兩種
1)類屬性 - 類屬性又要類的字段
怎麼定義:直接定義在類裡面函式外面的變數
怎麼使用:通過 『類.屬性』 的方式來使用
什麼時候用:屬性值不會因為物件不同而不一樣,這樣的屬性就可以定義成類屬性
2)物件屬性
怎麼定義:以 『self.屬性名=值』 的形式定義在__init__方法中
怎麼使用:通過 『物件.屬性』 的方式來使用
什麼時候用:屬性值會因為物件不同而不一樣,這樣的屬性就可以定義成物件屬性
class
person
: num =
10# 類屬性
def__init__
(self, name)
: self.name = name # 物件屬性
self.age =
18# 物件屬性
num2 =
100# 類屬性
# 使用類屬性
print
(person.num2)
# 100
# 使用物件屬性
p1 = person(
'小軒女'
)print
(p1.name, p1.age)
# 小軒女 18
# 練習: 定義乙個點類,屬性:x座標,y座標,方法:以'x:?,y:?'的形式列印點的資訊
# 要求:建立點的物件的時候可以給座標賦值,如果不賦值x座標和y座標都是0
class
coordinates
:def
__init__
(self, x=
0, y=0)
: self.x = x
self.y = y
defprint_coordinates
(self)
:print
("x : "
, self.x,
", y: "
, self.y)
defdistance
(self, other)
:print
('我和你的距離只有:',(
(other.x-self.x)**2
+(other.y-self.y)**2
)**0.5)
p1 = coordinates(23,
32)p2 = coordinates(26,
36)p1.print_coordinates(
)# x : 0 , y: 0
p2.print_coordinates(
)# x : 23 , y: 32
p1.distance(p2)
# 我和你的距離只有: 5.0
Day17物件導向作業
定義乙個矩形類,擁有屬性 長 寬 擁有方法 求周長 求面積 class rectangle def init self,length,width self.length length self.width width defperimeter self return self.length self...
day17 物件導向作業
定義乙個矩形類,擁有屬性 長 寬 擁有方法 求周長 求面積 class rectangle def init self,length,width self.length length self.width width defperimeter self return self.length 2 se...
day17 物件導向作業
定義乙個矩形類,擁有屬性 長 寬 擁有方法 求周長 求面積 class rectangular def init self,x,y self.long x self.width y defcalculate self l self.long self.width 2 s self.long self...