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 是乙個函式修飾符,它表示接下來的是乙個類方法,而對於平常我們見到的則叫做例項方法...