為什麼需要靜態方法?

2021-08-10 21:43:04 字數 1219 閱讀 6990

首先,定義乙個pizza類:

class pizza(object):

def cook(self):

return 0

我們可以得到:

#cook是乙個方法。

>>> pizza.cook

#要呼叫cook方法必須例項化pizza類。

>>> pizza.cook()

traceback (most recent call last):

file "", line 1, in

pizza.cook()

typeerror: cook() missing 1 required positional argument: 'self'

>>> pizza().cook()

0#不同的例項化不相同

>>> pizza() is pizza()

false

#cook方法依賴於類的例項

>>> pizza().cook is pizza().cook

false

>>>

然後,定義乙個靜態方法:

class pizza(object):

@staticmethod

def cook():#不需要傳入引數

return 0;

我們可以得到:

#靜態方法也是方法的一種

>>> pizza.cook

#呼叫靜態方法cook不需要例項化pizza類。

>>> pizza.cook()0#

不同的例項化不相同

>>> pizza() is pizza()

false

#不同例項的cook方法相同,例項與類的cook方法相同 ——> 靜態方法cook不需要依賴於類的例項。

#靜態方法即可以被類呼叫,同樣類的例項也可以呼叫,只是這樣會耗用更多的資源而已(不專業)。

>>> pizza().cook is pizza().cook

true

>>> pizza().cook is pizza.cook

true

>>>

複製**

可得結論:

類的方法在使用時,必須例項化類;而靜態方法不需要依賴於類的例項化。python 可以直接使用靜態方法,而避免了去例項化乙個物件。例項化物件需要消耗資源的,靜態方法避免了這一切。

為什麼需要模版成員方法

1 解決的問題 考慮下面的需求,有個集合模版vector,例項化乙個類vector,乙個類vector,建立物件 double vector和int vector,我想把int vector賦值給double vector,這個需求是合理的。思考一下,能成功嗎?2 我們知道,同乙個模版例項化出來的模...

為什麼靜態方法不能呼叫非靜態方法?

1.靜態方法是屬於類的,即靜態方法是隨著類的載入而載入的,在載入類時,程式就會為靜態方法分配記憶體,而非靜態方法是屬於物件的,物件是在類載入之後建立的,也就是說靜態方法先於物件存在。2.當你建立乙個物件時,程式為其在堆中分配記憶體,一般是通過this指標來指向該物件。靜態方法不依賴於物件的呼叫,它是...

為什麼需要PKI

為什麼需要pki 隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要pki,pki...