方法:
可以在外部直接使用類名.方法名來呼叫的方法稱為 類方法,類方法屬於一種動態載入的概念,預設情況下只會載入某個方法,需要使用classmethod()函式來進行處理,才能直接在外部使用類名呼叫
例子:
1class
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 屬性 不推薦,我用的時候出現未知錯誤 獲取父類的類方法。為什麼使用屬性會出現問題?因...