day17物件導向

2021-10-25 02:12:10 字數 3271 閱讀 9464

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...