python教程 python為什么要使用靜態(tài)方法?
python為什么要使用靜態(tài)方法?Python使用靜態(tài)方法,類(lèi)似于函數(shù)工具。一般來(lái)說(shuō),靜態(tài)方法被盡可能少地使用。Python的靜態(tài)方法和類(lèi)成員方法可以通過(guò)類(lèi)或?qū)嵗L(fǎng)問(wèn)。厘清它們的概念并不容易,但它們之
python為什么要使用靜態(tài)方法?
Python使用靜態(tài)方法,類(lèi)似于函數(shù)工具。一般來(lái)說(shuō),靜態(tài)方法被盡可能少地使用。
Python的靜態(tài)方法和類(lèi)成員方法可以通過(guò)類(lèi)或?qū)嵗L(fǎng)問(wèn)。厘清它們的概念并不容易,但它們之間還是有區(qū)別的:1。靜態(tài)方法不需要傳入self參數(shù),類(lèi)成員方法需要傳入表示類(lèi)的CLS參數(shù);
2。從第一點(diǎn)看,靜態(tài)方法不能訪(fǎng)問(wèn)實(shí)例變量,類(lèi)成員方法不能訪(fǎng)問(wèn)實(shí)例變量,但是靜態(tài)方法有點(diǎn)像函數(shù)工具庫(kù),而類(lèi)成員方法更像java面向?qū)ο蟾拍钪械撵o態(tài)方法。
Python中的classmethod和staticmethod有什么具體用途?
區(qū)別在于以下兩個(gè)方面:
1。Classmethod類(lèi)方法必須將類(lèi)作為第一個(gè)參數(shù),“can access the class variable”,可以通過(guò)實(shí)例名或類(lèi)名訪(fǎng)問(wèn);
2。靜態(tài)方法Static method不強(qiáng)制傳入self或CLS,對(duì)類(lèi)和實(shí)例一無(wú)所知(相當(dāng)于將class方法變成普通方法,獨(dú)立于類(lèi)),“無(wú)法訪(fǎng)問(wèn)類(lèi)”還可以通過(guò)實(shí)例名或類(lèi)名訪(fǎng)問(wèn)實(shí)例變量。
具體用途如下:
1。Classmethod類(lèi)方法依賴(lài)self或CLS來(lái)傳遞參數(shù),因此它必須寫(xiě)在類(lèi)中,與類(lèi)密切相關(guān),并且可以訪(fǎng)問(wèn)類(lèi)外的類(lèi)變量;
2。靜態(tài)方法靜態(tài)方法完全獨(dú)立于類(lèi),因此它不能訪(fǎng)問(wèn)類(lèi)方法。
就這么簡(jiǎn)單。是否需要訪(fǎng)問(wèn)類(lèi)變量取決于是否需要訪(fǎng)問(wèn)類(lèi)方法。
python為什么要使用靜態(tài)方法?
主要功能是它需要綁定到一個(gè)對(duì)象,python解析器會(huì)自動(dòng)將實(shí)例本身傳遞給方法,如第14行所示。但是,直接使用instancemethod調(diào)用方法。F1()還不夠。類(lèi)InstanceMethod(object):def{init}(self,a):self.a=a def f1(self):print“這是{0}.”。format(self)def f2(self,a):print“Value:{0}”。format(a)if{uuuuuu name{uuuuuu==“uuumain”:#im InstanceMethod()im=InstanceMethod(“233”)im.f1()#im.f2()im.f2(233)