python學習筆記 類的方法總結

2021-10-10 09:32:34 字數 3914 閱讀 8343

在python中,類的方法有如下三種:

(1)例項方法(即:物件方法)

(2)類方法

(3)靜態方法

下面,將對這三種方法進行總結。

通常情況下,類中的方法預設是例項方法,在定義的時候不需要使用使用特殊的關鍵字進行標識。

對於例項方法,我們需要了解以下的基本知識:

(1)例項方法至少有乙個引數,預設該引數的名字為「self」(也可以是其他的),若有其他引數,可以跟在該引數後面

(2)例項方法有兩種呼叫方式:

第一種:通過例項物件呼叫,該方法不需要手動傳遞例項引數,編譯器在後期載入的時候會把例項p載入至例項引數,具體參見**示例

第二種:通過類名稱呼叫,該方法需要手動傳遞例項引數,具體參見**示例

注意: 從上面的兩種呼叫方法我們可以知道,例項方法被呼叫時要向它的第乙個引數傳遞例項物件。

#例項方法**

class

student

: name=

"jom"

age=

21 #例項方法有兩個引數的情況,其中self為預設引數,需要向它傳遞例項物件,str為字串型別,由使用者在呼叫時自行新增

def instanceshow

(self,str)

:print

(self,self.name,self.age,str)

p=student()

print

("輸出例項p:"

)print

(p)print

("輸出類名稱student:"

)print

(student)

print

("使用例項物件呼叫的結果:")p.

instanceshow

("例項物件呼叫"

)print

("使用類名稱呼叫的結果:"

)student.

instanceshow

(p,"類名稱呼叫"

(1)類方法要使用裝飾器@classmethod來修飾,一般情況,第一引數預設命名為cls(cls=class,可以是別的名字)

(2)類方法有兩種呼叫方式:

第一種:使用類的名稱呼叫,參見**示例

第二種:使用例項呼叫,參見**

注意: 從以上的兩種呼叫方式,我們需要知道,類方法呼叫的時候,會向他的第乙個引數傳遞類的名稱

#類方法**

class

student

: name=

"jom"

age=

21 @classmethod

def classshow

(cls,str)

:print

(cls,cls.name,cls.age,str)

p=student()

print

("輸出例項p:"

)print

(p)print

("輸出類名稱student:"

)print

(student)

print

("使用例項呼叫的結果:")p.

classshow

("例項呼叫"

)print

("使用類名稱呼叫的結果:"

)student.

classshow

("類名稱呼叫"

靜態方法,和我們之前在其他語言中學到的靜態函式時很相似的,去唄就在於,靜態方法,定義在類的命名空間中,而函式定義在全域性命名空間中。

(1)靜態函式通過裝飾器@staticmethod修飾

(2)靜態函式的呼叫有以下兩種方式:

第一種:例項呼叫,參見**

第二種:類名稱呼叫,參見**

靜態方法沒有類似 self、cls 這樣的特殊引數,因此 python 直譯器不會對它包含的引數做任何類或物件的繫結。也正因為如此,類的靜態方法中無法呼叫任何類屬性和類方法。

注意: 我們需要知道在呼叫靜態函式時不會向函式傳遞任何特殊引數,在上面的例項方法和類方法中都有自己的特殊引數,用來和類或者物件進行**使用,而靜態方法是沒有的。雖然它沒有引數,但是不意味著它沒有引數,它也是可以擁有普通引數的,比如字串型別。

#靜態方法**

class

student

: name=

"jom"

age=

21 @staticmethod

#str是普通引數,非特殊引數,沒有和其他類或者物件進行**

def staticshow

(str)

:print

(student,student.name,student.age,str)

p=student()

print

("輸出例項p:"

)print

(p)print

("輸出類名稱student:"

)print

(student)

print

("使用例項呼叫的結果:")p.

staticshow

("例項呼叫"

)print

("使用類名稱呼叫的結果:"

)student.

staticshow

("類名稱呼叫"

對於以上三種類的方法,我們需要知道以下幾點:

下面我們將例項方法,類方法和靜態方法放在同乙個**中,進行對比。

class

student

: name=

"jom"

age=

21 @staticmethod

#str是普通引數,非特殊引數,沒有和其他類或者物件進行**

def staticshow()

:print

(student.name,student.age)

@classmethod

def classshow

(cls)

:print

(cls.name, cls.age)

def instanceshow

(self)

:print

(self.name, self.age)

s=student()

print

("使用靜態方法:")s.

staticshow()

# s.age=

11# print

("修改age後再次使用靜態方法:"

)# s.

staticshow()

p=student()

print

("使用類方法:")p.

classshow()

p.name=

"tom"

print

("修改name後再次使用類方法:")p.

classshow()

q=student()

print

("使用例項方法:")q.

instanceshow()

q.name=

"alen"

print

("修改name後再次使用例項方法:")q.

Python 例項方法 類方法 靜態方法區別總結

二 示例 注意 不管self引數,還是cls引數,都是一種約定俗成的用法,其實是可以使用其他的引數名代替。但是不建議使用其他引數名,畢竟 不是只是寫給自己看的。class a object def m1 self,n print self self classmethod def m2 cls,n ...

Python學習筆記 類 類方法 類屬性

類 類方法 類屬性練習 class student company xx大學 類屬性 count 0 類屬性 def init self,name,score 初始化 給各屬性賦值 self.name name 例項屬性 self.score score student.count 1def say...

python學習筆記 類

brad turtle.turtle 使用這條命令時,是指在turtle這個檔案裡有乙個類 turtle。在呼叫這條命令時,其實是呼叫裡邊的 init 函式。init函式的作用是在記憶體中分配空間來建立具體的物件。client rest.twiliorestclient 使用這條命令時,是指在res...