python中靜態方法和類方法

2021-07-23 08:18:21 字數 990 閱讀 8807

方法是作為類屬性儲存的函式

def

get_size

(self):

pass

在python2, 3中的不同點。

2: pizza.get_size(), 會報乙個未繫結的函式的錯誤

3: pizza.get_size(), 會報乙個缺少引數的錯誤, 即,python3可以動態的傳入方法所屬於的類的任意乙個例項

靜態方法:

靜態方法是屬於類的方法,但是實際上並非執行在類的例項上

class

pizza

(object):

@staticmethod

defmix_ingredients

(x, y):

return x + y

defcook

(self):

return self.mix_ingredients(self.cheese, self.vegetables)

pizza().cook is pizza().cook false

pizza().mix_ingredients is pizza().mix_ingredients true

pizza().mix_ingredients is pizza.mix_ingredients true

靜態方法可以避免建立繫結方法(也是物件)的開銷,提高**的可讀性,知道這個方法並不依賴物件的狀態,可以在子類中覆蓋靜態方法

類方法:

直接繫結到類的方法,

主要用於建立工廠方法, 即以特定的方式例項化物件,如果使用staticmethod,必須在方法中硬編碼類名pizza, 所有繼承自pizza的類都無法根據他們的需要使用這個方法

這裡子類可以用任何方法(靜態方法,類方法, 例項方法)覆蓋父類的抽象方法

python 靜態方法和類方法

python 靜態方法和類方法 class testclassmethod object method method hoho def init self self.name leon def test1 self print test1 print self classmethod def tes...

Python中的類方法 靜態方法和例項方法

一 例項方法 先定義乙個輸出日期的類date,後面內容都是基於此類進行拓展。class date def init self,year,month,day self.year year self.month month self.day day def str self return format ...

python 類的靜態方法和類方法

1.靜態方法 使用 staticmethod修飾 不需要傳入引數,類和類的例項物件都可以呼叫 沒有引數的方法,如果未宣告靜態方法的話,例項物件呼叫將會出錯 1class a staticmethod 宣告靜態方法 def printa 無需引數 print a a.printa 類名直接呼叫 a a...