Python 類的方法

2021-09-08 09:03:46 字數 1230 閱讀 9381

方法:

可以在外部直接使用類名.方法名來呼叫的方法稱為 類方法,類方法屬於一種動態載入的概念,預設情況下只會載入某個方法,需要使用classmethod()函式來進行處理,才能直接在外部使用類名呼叫

例子:

1

class

people(object):

2 color = '

yellow

' -->類的全域性靜態屬性

3def

__init__

(self,name,age):

4 self.name = name -->類的動態屬性

5 self.age =age

67 @classmethod -->裝飾器版本(talk = classmothod(talk) ) --->動態類方法

8def talk(self): -->類的方法

9print('

%s want to talk

' %self.name )

1011 @staticmethod -->裝飾器版本(say = classmothod(say) ) ---->靜態類方法

12def say(): -->類的方法

13print('

%s want to say

' %people.color )

1415

#函式版本 和裝飾器版本效果相同

16 talk =classmethod(talk)

17 say =staticmethod(say)

1819

呼叫方法:

20people.talk()

21 people.say()

注意:動態類方法:可以直接通過self.屬性來訪問類的全域性屬性,只有訪問的時候配合classmethod函式,動態的去載入對應的屬性。(有點省記憶體)

靜態類方法:不傳遞self引數,需要通過staticmethod函式來載入所有類屬性和方法,需要通過類名.屬性來呼叫,才可以在類外直接使用類名進行呼叫(優點,速度快)

類方法的第乙個引數必須是self,因為self是類本身,如果不加self,將無法通過類或例項化的類呼叫類方法,如果想要通過類名來呼叫需要配和staticmethod函式進行處理

posted @

2017-04-12 22:17

dahlhin 閱讀(

...)

編輯收藏

python 類的靜態方法和類方法

1.靜態方法 使用 staticmethod修飾 不需要傳入引數,類和類的例項物件都可以呼叫 沒有引數的方法,如果未宣告靜態方法的話,例項物件呼叫將會出錯 1class a staticmethod 宣告靜態方法 def printa 無需引數 print a a.printa 類名直接呼叫 a a...

python的類的方法

一 介紹 在類的內部,使用def關鍵字可以為類定義乙個方法,與一般函式定義不同,類方法必須包含引數self,且為第乙個引數。二 類定義 class people 定義基本屬性 name age 0 定義私有屬性,私有屬性在類外部無法直接進行訪問 weight 0 定義構造方法 def init se...

Python 類方法中呼叫父類的類方法

3.super 測試 推薦使用,安全 如果類的物件方法呼叫父類的物件方法,可以使用super 函式獲取父類的物件方法 如果在類方法中呼叫父類的類方法,則可以使用super 推薦,暫時未發現問題 或者cls.base 屬性 不推薦,我用的時候出現未知錯誤 獲取父類的類方法。為什麼使用屬性會出現問題?因...