python學習筆記(十二)初學類

2021-10-02 12:47:13 字數 4503 閱讀 7969

1、類的出現

面對物件程式設計是目前最有效的軟體編寫方法之一,而類的編寫與例項化則是面對物件程式設計的基本要求。與函式相同,類通常也被封裝在模組中,需要時將類匯入主程式檔案,再例項化。

2、類的組成

類通常包含兩個部分——屬性和方法(類中的函式統稱為方法,因此方法本質上就是函式,只不過在形參上有特殊的規定)。我們根據乙個例子來學習一下簡單的類:

class

pet():

# 類名的命名規則遵循駝峰命名法,一般不採用下劃線,並且要注意大小寫

def__init__

(self, name, age)

: self.name = name

self.age = age

defget_name

(self)

:print

("the pet's name is "

+ self.name +

".")

defget_age

(self)

:print

("the pet's age is "

+str

(self.age)

+"."

)

方法__init__()是乙個特殊的方法,因為在類進行例項化時,這個方法是自動執行的(init兩邊各有兩個下劃線),我們可以將它看成乙個構造器,完成初始化的功能(初始化類的屬性),在定義形參時,必須包含self,而且必須位於其他形參之前。

但是當我們例項化時,實參self將被自動傳入(它讓例項可以訪問類中的屬性和方法)。

以self為字首的變數就是類的屬性,類中所有的方法都可以使用。

在類中定義方法必須有形參self,不然會報錯。

3、類的例項化

類是乙個冷冰冰的空殼子,只有被例項化的類——物件才具備生命,我們來看例子:

class

pet():

# 類名的命名規則遵循駝峰命名法,一般不採用下劃線,並且要注意大小寫

def__init__

(self, name, age)

: self.name = name

self.age = age

defget_name

(self)

:print

("the pet's name is "

+ self.name +

".")

defget_age

(self)

:print

("the pet's age is "

+str

(self.age)

+"."

)pet_0 = pet(

'mike',1

)# 類的例項化,規則請自行體會(傳入的實參與__init__()有關)

pet_1 = pet(

'marry',2

)print

(pet_0.name)

print

(pet_0.age)

pet_1.get_name(

)pet_1.get_age(

)

執行結果為:

mike

1the pet's name is marry.

the pet's age is

2.

無論是訪問類中的變數還是呼叫類中的方法,一般都採用句點表示法。並且我們可以根據需要建立任意數量的例項。

4、屬性的預設值

注意,類中的每個屬性都必須初始化。我們有時候可以在類中給屬性設定乙個預設值,這樣的話在定義__init__()方法時也就不需要為該屬性設定形參。

class

pet():

# 類名的命名規則遵循駝峰命名法,一般不採用下劃線,並且要注意大小寫

def__init__

(self, name, age)

: self.name = name

self.age = age

self.master =

'tom'

defget_name

(self)

:print

("the pet's name is "

+ self.name +

".")

defget_age

(self)

:print

("the pet's age is "

+str

(self.age)

+"."

)def

get_master

(self)

:print

("the pet's master is "

+ self.master +

".")

pet_0 = pet(

'mike',1

)pet_0.get_master(

)

執行結果為:

the pet's master is tom.
在上面這個例子中,屬性master的預設值就是 『tom』(必須在__init__()函式體內完成所有屬性的初始化) ,因此我們在例項化的時候不需要為它傳參。

5、修改屬性的值

通常情況下,我們有兩種方式可以修改屬性的值。

a 直接通過例項

直接通過例項訪問,然後進行值的修改,看例子:

class

pet():

# 類名的命名規則遵循駝峰命名法,一般不採用下劃線,並且要注意大小寫

def__init__

(self, name, age)

: self.name = name

self.age = age

self.master =

'tom'

defget_name

(self)

:print

("the pet's name is "

+ self.name +

".")

defget_age

(self)

:print

("the pet's age is "

+str

(self.age)

+"."

)def

get_master

(self)

:print

("the pet's master is "

+ self.master +

".")

pet_0 = pet(

'mike',1

)pet_0.get_master(

)pet_0.master =

'marry'

pet_0.get_master(

)

執行結果為:

the pet's master is tom.

the pet's master is marry.

b 通過方法修改

我們可以在類中定義乙個專門用於更新屬性的方法,我個人更建議這種方式,因為我們可以通過完善方法的定義規避一些錯誤(比如設定條件句防止修改後的值不合理)。

class

pet():

# 類名的命名規則遵循駝峰命名法,一般不採用下劃線,並且要注意大小寫

def__init__

(self, name, age)

: self.name = name

self.age = age

self.master =

'tom'

defget_name

(self)

:print

("the pet's name is "

+ self.name +

".")

defget_age

(self)

:print

("the pet's age is "

+str

(self.age)

+"."

)def

get_master

(self)

:print

("the pet's master is "

+ self.master +

".")

defupdate_master

(self, master)

: self.master = master

pet_0 = pet(

'mike',1

)pet_0.get_master(

)pet_0.update_master(

'marry'

)pet_0.get_master(

)

執行結果為:

the pet's master is tom.

the pet's master is marry.

Python學習筆記(十二)

1.語法錯誤和異常錯誤 while true print hello python error message file c programming eclipse project pythonstudy exception.py line 9 while true print hello pyth...

Python學習筆記(十二) Python模組

一 python模組 python 模組 module 是乙個 python 檔案,以 py 結尾,包含了 python 物件定義和python語句。模組讓你能夠有邏輯地組織你的 python 段,把相關的 分配到乙個模組裡能讓你的 更好用,更易懂。模組能定義函式,類和變數,模組裡也能包含可執行的 ...

python學習筆記十二(字典)

字典 1.概述 使用鍵 值 key value 儲存,具有極快的查詢速度 乙個字典裡可以儲存多個鍵 值對 注意 字典是無序的 key的特性 1 字典中的key必須唯一 2 key必須是不可變的物件 3 字串 整數等都是不可變的,可以作為key 4 list是可變的,不能作為key 例 儲存多個學生的...