python中的靜態方法和類方法有什麼根本的不同

2023-01-16 10:55:06 字數 1869 閱讀 1115

1樓:匿名使用者

靜態方法就和普通函式一樣,只是呼叫的時候需要通過類來呼叫,而類方法的第乙個引數是類,通常用cls表示,就像成員方法第乙個引數是類的例項(self)一樣。

靜態方法和非靜態方法的區別是什麼

2樓:問明

一、相同點:

靜態類和非靜態類在c#中定義基本是一樣的,只是靜態類定義需要加上static修飾符而已。

二、生命週期:

靜態方法(static method)與靜態成員變數一樣,屬於類本身,在類裝載的時候被裝載到記憶體(memory),不自動進行銷毀,會一直存在於記憶體中,直到jvm關閉。

非靜態方法(non-static method)又叫例項化方法,屬於例項物件,例項化後才會分配記憶體,必須通過類的例項來引用。不會常駐記憶體,當例項物件被jvm**之後,也跟著消失。

三、效率:靜態方法的使用效率比非靜態方法的效率高。

按照上面的概念,只要記憶體夠用,都可以使用靜態的。

四、執行緒安全:

靜態方法是共享**段,靜態變數是共享資料段。既然是「共享」就有併發(concurrence)的問題。

靜態方法和例項方法是一樣的,在型別第一次被使用時載入。呼叫的速度基本上沒有差別。

五、靜態成員與非靜態成員比較:

1、靜態成員屬於類所有,非靜態成員屬於類的例項所有。

2、每建立乙個類的例項,都會在記憶體中為非靜態成員新分配一塊儲存;非靜態成員屬於類所有,為各個類的例項所公用,無論類建立了多少例項,類的靜態成員在記憶體中只佔同一塊區域。

六、使用不同:

1、靜態方法屬於類所有,類例項化前即可使用。

2、非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員。

3、因為靜態方法在類例項化前就可以使用,而類中的非靜態變數必須在例項化之後才能分配記憶體,static內部只能出現static變數和其他static方法!而且static方法中還不能使用this...等關鍵字。

因為它是屬於整個類!

4、靜態方法效率上要比例項化高,靜態方法的缺點是不自動進行銷毀,而例項化的則可以做銷毀。

5、靜態方法和靜態變數建立後始終使用同一塊記憶體,而使用例項的方式會建立多個記憶體。

3樓:網友

靜態方法和非靜態方法的區別,是靜態方法,一般用於觀察。

python中靜態方法和類方法的區別

4樓:山東中公優就業

一、先是在語法上面的區別:

1、靜態方法不需要傳入self引數,類成員方法需要傳入代表本類的回cls引數;

2、靜態方法是無答妨訪問例項變數和類變數的,類成員方法無法訪問例項變數但是可以訪問類變數。

二、使用的區別:

由於靜態方法無法訪問類屬性,例項屬性,相當於乙個相對獨立的方法,跟類其實並沒有什麼關係。這樣說來,靜態方法就是在類的作用域裡的函式而已。

python靜態方法和類方法的區別 200

5樓:

python靜態變數實現方法:class ctest(object):_init=nonedef __new__(cls,value):

if cls.__init is none:cls.

__init=object.__new__(cls)cls.__init.

value=valuereturn cls.__init測試**:a=ctest(5)b=ctest(6)print a.

valueprint 輸出結果:55

lt;譯文>python中靜態方法和類方法的區別是什麼

python 類方法和靜態方法的區別

velocity中怎樣呼叫類的靜態方法

直接把乙個class放入velocity的context中,在vm中可直接呼叫這個class的static方法。velocity簡介 velocity是乙個基於java的模板引擎 模板引擎的作用就是取得資料並加以處理,最後顯示出資料 它允許任何人僅僅簡單的使用模板語言來引用由java 定義的物件。主...

c泛型方法中,如何呼叫類引數中的靜態方法

很明顯,你的函式要抄做的是乙個把弱型別的datatable對映到強型別list的orm功能,但getentitybydatarow這個對映函式根本不應該定義到t中,你可以單獨寫乙個靜態類,裡面使用反射技術,完成反射就可以了。既然在同類中,直接寫方法名不行麼?試試last.add dynamic t ...

c 語言中類中的靜態資料成員為什麼必須在類體外初始化

可以通過以下幾個例子更形象的說明這個問題 test.cpp include class a int main 編譯以上 會出現 對 a a 未定義的引用 錯誤。這是因為靜態成員變數a未定義,也就是還沒有分配記憶體,顯然是不可以訪問的。再看如下例子 test.cpp include class a i...