當前位置:首頁 » 編程語言 » python靜態類方法

python靜態類方法

發布時間: 2024-04-30 01:30:28

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

類方法,可以調用類屬性。。。用於操作一些類中的公有屬性。。。比如這個士兵類,每個士兵都擁有一把相同的槍(gun),都有相同的最大血量(maxhp),如果在創建對象的時候,一個一個的賦值,就會顯得比較多餘。。。因此,把這兩個屬性提出來,作為一個公有屬性。。即每個士兵對象,都擁有一把95式步槍,都擁有30的最大血量。。之後聲明一個類方法(public),之後可以在類方法中,針對這兩個公有的屬性進行操作。。。

靜態方法,其實更像一個與類幾乎無關的函數。。不能操作類中的任何屬性。。所以它並不是用來操作類與對象本身的。。。但它又可以被對象調用。。。。比如游戲中,與士兵對話,士兵說話的內容一般存在資料庫中。。而當主角與士兵對話,針對資料庫查詢,並輸出到UI界面的相關工作,就可以放在這個函數里。。這樣會讓代碼結構更清晰。。。當然,如果不嫌亂,寫在類方法中,也是可以的。。。有人覺得PYTHON的靜態方法是雞肋。。它也確實不是必須的,但有時候卻可以讓代碼結構更清晰。。。比如你有幾十種不同的士兵類,你要找到對應每一個類的數據操作相關的函數,就會顯得很困難。。。適當使用靜態方法,就顯得一目瞭然

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

類方法的第一個parameter是類自己,然後才是參數。而靜態方法是和類無關的,也不會自動導入類作為參數。可以說靜態方法只是一個和自己所在的類無關的一個方法。可以隨意你怎麼用這個方法。抽象點說靜態方法就是你在其他語言裡面用的普通方法,類方法是Java里的類方法一樣的。

C. Python中靜態方法和類方法的區別

靜態方法是調用時跟具體實例沒有關聯的方法,不需要使用self和cls參數。
類方法是調用的時候,要使用類的相關成員的方法,需要使用cls參數,但不用self參數。
參考:劉江的Python教程

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

面相對象程序設計中,類方法和靜態方法是經常用到的兩個術語。
邏輯上講:類方法是只能由類名調用;靜態方法可以由類名或對象名進行調用。
在C++中,靜態方法與類方法邏輯上是等價的,只有一個概念,不會混淆。
而在python中,方法分為三類實例方法、類方法、靜態方法。代碼如下:

class Test(object):
def InstanceFun(self):
print("InstanceFun");
print(self);

@classmethod
def ClassFun(cls):
print("ClassFun");
print(cls);

@staticmethod
def StaticFun():
print("StaticFun");

t = Test();
t.InstanceFun();# 輸出InstanceFun,列印對象內存地址「<__main__.Test object at 0x0293DCF0>」
Test.ClassFun(); # 輸出ClassFun,列印類位置 <class '__main__.Test'>
Test.StaticFun(); # 輸出StaticFun
t.StaticFun(); # 輸出StaticFun
t.ClassFun(); # 輸出ClassFun,列印類位置 <class '__main__.Test'>
Test.InstanceFun(); # 錯誤,TypeError: unbound method instanceFun() must be called with Test instance as first argument
Test.InstanceFun(t); # 輸出InstanceFun,列印對象內存地址「<__main__.Test object at 0x0293DCF0>」
t.ClassFun(Test); # 錯誤 classFun() takes exactly 1 argument (2 given)

可以看到,在python中,兩種方法的主要區別在於參數。實例方法隱含的參數為類實例self,而類方法隱含的參數為類本身cls。
靜態方法無隱含參數,主要為了類實例也可以直接調用靜態方法。
所以邏輯上類方法應當只被類調用,實例方法實例調用,靜態方法兩者都能調用。主要區別在於參數傳遞上的區別,實例方法悄悄傳遞的是self引用作為參數,而類方法悄悄傳遞的是cls引用作為參數。
python實現了一定的靈活性使得類方法和靜態方法,都能夠被實例和類二者調用

熱點內容
滬江網校安卓怎麼倍速播放 發布:2024-05-16 23:19:25 瀏覽:397
支付寶怎麼設置登陸密碼怎麼設置密碼 發布:2024-05-16 23:18:07 瀏覽:834
為什麼修改wifi密碼後無法加入 發布:2024-05-16 23:03:04 瀏覽:737
車機安卓未知來源在設置哪裡 發布:2024-05-16 22:31:48 瀏覽:794
紅包邀請驗證碼在哪裡填安卓手機 發布:2024-05-16 22:30:01 瀏覽:642
上傳日上限 發布:2024-05-16 22:26:08 瀏覽:859
c語言基本概念 發布:2024-05-16 21:44:16 瀏覽:190
sqlserver跨庫查詢 發布:2024-05-16 21:36:56 瀏覽:164
sql多表連接語句 發布:2024-05-16 21:21:53 瀏覽:301
sqlscope 發布:2024-05-16 21:17:37 瀏覽:966