python中的類方法與靜態方法的區別

2021-07-24 20:31:42 字數 908 閱讀 5603

classmethod:類方法

staticmethod:靜態方法

在python中,靜態方法和類方法都是可以通過類物件和類物件例項訪問。但是區別是:

@classmethod 是乙個函式修飾符,它表示接下來的是乙個類方法,而對於平常我們見到的則叫做例項方法。 類方法的第乙個引數cls,而例項方法的第乙個引數是self,表示該類的乙個例項。

普通物件方法至少需要乙個self引數,代表類物件例項

類方法有類變數cls傳入,從而可以用cls做一些相關的處理。並且有子類繼承時,呼叫該類方法時,傳入的類變數cls是子類,而非父類。 對於類方法,可以通過類來呼叫,就像c.f(),有點類似c++中的靜態方法, 也可以通過類的乙個例項來呼叫,就像c().f(),這裡c(),寫成這樣之後它就是類的乙個例項了。

靜態方法則沒有,它基本上跟乙個全域性函式相同,一般來說用的很少

example 1:

class a():

@staticmethod

def staticm():

print 『static』

def normalm(self):

print 『nomarl』,self

@classmethod

def classm(cls):

print 『class』,cls

a1=a()

a1.normalm()

nomarl <main.a instance at 0x84dddec>

a1.staticm()

static

a1.classm()

classmain.a

type(a)

Python中靜態方法與類方法的區別

1.靜態方法的使用 coding utf 8 類方法使用 classmethod 修飾 cls.內部類封裝,可以在類方法內部訪問類方法和類屬性 class writer object age 15 def init self,age,name writer.age age self.name nam...

Python中靜態方法與類方法比較

python是一種物件導向的程式語言,故類的概念十分重要。其中python類中方法的定義有這樣兩種靜態方法與類方法很相似。定義乙個類 class myclass staticmethod def foo1 print this is static method classmethod def foo...

python中的類 3 類方法 靜態方法

python中的類方法與靜態方法 面相物件程式設計中,類方法和靜態方法是經常用到的兩個術語。邏輯上講 類方法是只能由類名呼叫 靜態方法可以由類名或物件名進行呼叫。類方法 在python中.類方法 classmethod 是乙個函式修飾符,它表示接下來的是乙個類方法,而對於平常我們見到的則叫做例項方法...