python中例項方法 靜態方法以及類方法的區別

2021-08-18 07:10:12 字數 946 閱讀 4027

搞清楚python中例項方法、靜態方法和類方法的區別,先上一段**

class person(object):

_num = 0 #類變數

def __init__(self, name):

self.__name = name

def get_name(self):#例項方法

return self.__name

@staticmethod

def say():#靜態方法

print("i'm human")

@classmethod

def change_num(cls):#類方法

cls._num = cls._num + 1

例項方法:

在乙個類定義裡按照預設方式定義的函式,可以作為這個類的例項物件的方法。

特點:1>至少要有乙個表示其呼叫物件的形參,放在參數列中的第一位,通常命名為self。

2>必須從類的例項物件出發呼叫該函式。

p = person('tom')

p.get_name()

'tom'

靜態方法:

可以看作是普通的函式,但是由於某些原因定義在類中,不需要使用self作為特殊引數。

特點:1>定義之前需要加上@staticmethod的裝飾器。

2>使用時直接從類中呼叫,不必和例項相**。

person.say()

i'm human

類方法:

類中定義的最後一種方法為類方法,也是類物件的屬性,以屬性的形式呼叫。

特點:1>定義之前要加裝@classmethod裝飾器。

2>定義時需要有乙個表示其呼叫類的形參,放在參數列的第一位,通常命名為cls。

3>用類方法來實現與本類所有物件有關的操作。比如修改類例項數量計數器。

person.change_num()

person._num

python中的例項方法 類方法 靜態方法

class test object a 1 def init self,a self.a a definstance print self print self.a classmethod defclass fun cls print cls.a staticmethod defstatic fun...

python例項方法 靜態方法 類方法

class foo object deftest self 定義了例項方法 print object classmethod deftest2 clss 定義了類方法 print class staticmethod deftest3 定義了靜態方法 print static 1 例項方法就是類的例...

Python類方法 靜態方法 例項方法

靜態方法是指類中無需例項參與即可呼叫的方法 不需要self引數 在呼叫過程中,無需將類例項化,直接在類之後使用.號運算子呼叫方法。通常情況下,靜態方法使用 staticmethod裝飾器來宣告。class classa object staticmethod def func a print hel...