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

2021-06-22 12:09:50 字數 1224 閱讀 7476

python是一種物件導向的程式語言,故類的概念十分重要。其中python類中方法的定義有這樣兩種靜態方法與類方法很相似。

定義乙個類:

class myclass:

@staticmethod

def foo1():

print "this is static method"

@classmethod

def foo2(cls):

print "this is class method"

呼叫:mc = myclass()

myclass.foo1()

mc.foo1()

myclass.foo2()

mc.foo2()

結果:this is static method

this is static method

this is class method

this is class method

發現類的靜態方法與類方法除了在定義類方法時多傳了個引數,其他的沒什麼區別,無論是定義上還是呼叫上,都允許類和例項呼叫。

其實也就是上述的唯一不同(類方法定義時傳遞了乙個cls引數),使類方法在一定的場景下很有用,該cls是類本身,如果我們要更新類屬性時,類方法很有用

現在我們舉個例子

定義類:

class color(object):

_color = (0, 0, 0);

@classmethod

def value(cls):

if cls.__name__== 'red':

cls._color  = (255, 0, 0)

elif cls.__name__ == 'green':

cls._color = (0, 255, 0)

return cls._color

class red(color):

pass

class green(color):

pass

class unknowncolor(color):

pass

red = red()

green = green()

xcolor = unknowncolor()

print 'red = ', red.value()

print 'green = ', green.value()

print 'xcolor =', xcolor.value()

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中類屬性有類屬性和例項屬性之分,類的方法也有不同的種類 例項方法 類方法靜態方法 例子 class demomthd staticmethod 靜態方法 def static mthd print 呼叫了靜態方法 classmethod 類方法 def class mthd cls pr...

Python中類方法和靜態方法

要在類中使用靜態方法,需在靜態方法前面加上 staticmethod標記符,以表示下面的成員函式是靜態函式。使用靜態方法的好處 其函式不需要self引數,可以通過類呼叫該方法,不需要定義該類例項 當然通過類例項呼叫也沒有問題 類方法可以通過類或它的例項來呼叫,但 該方法的 第乙個引數cls是定義該方...