首先,定義乙個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...