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

python類靜態變數

發布時間: 2022-08-05 16:44:42

A. python中靜態變數是怎麼在對象方法中訪問

Python 是雙面向的,既可以面向函數編程,也可以面向對象編程,所謂面向函數就是單獨一個. py 文件,裡面沒有類,全是一些函數,調用的時候導入模塊,通過模塊名.函數名()即可調用,完全不需要類,那麼你可能會問,那要類還有什麼毛用? 類就是用來面向對象編程啦,類可以有自己的屬性,類可以創建很多實例,每個實例可以有不同的屬性,這也就保存了很多私有的數據,總之都有存在的必要.
再來看上面這張圖,在類裡面定義的函數就是方法,類方法需要@ classmethod 修飾並且有個隱藏參數 cls,實例方法必須有個參數 self, 靜態方法必須有 @staticmethod修飾,類和實例都可以訪問靜態方法,實例可以訪問實例方法也可以訪問類方法,類可以訪問類方法也可以訪問實例方法,訪問實例方法必須要帶參數 self, 可以理解為類其實也是一個實例,類訪問實例方法不帶參數會報錯的.類本身可以訪問函數,實例卻不行.

B. python類真的有靜態方法嗎

python的繼承實際上是一個指針或者是引用的鏈表。它是動態語言。面向對象有多態、繼承、封裝幾個主要概念。要形成面向對象還需要分層,抽象,動靜態建模等技能。繼承通常是指類的繼承,派生類從基類里繼承它的屬性與方法。當然也可以重載基類的方法,或者是重寫方法。python里雖然可以重寫方法,不過仍然可以通過super等函數修飾獲得基類方法。基類又稱父類。派生類也稱為子類。屬性就是對象中的變數。方法就是對象中的函數。 類是一種定義。如果類有了實例,就稱為對象。類是對象的靜態結構的描述,是聲明。

C. python的類中有沒有靜態變數

>>>classMyClass(object):
...clsvar='static'
...
>>>c1=MyClass()
>>>c2=MyClass()
>>>printc1.clsvar,c2.clsvar,MyClass.clsvar
staticstaticstatic
>>>c1.clsvar='changed'
>>>printc1.clsvar,c2.clsvar,MyClass.clsvar
changedstaticstatic
>>>MyClass.clsvar='changecommon'
>>>printc1.clsvar,c2.clsvar,MyClass.clsvar

>>>

D. Python中變數本身沒有任何含義他會根據不同的數據表示不同的意義

咨詢記錄 · 回答於2021-12-10

E. 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,列印對象內存地址「」
Test.ClassFun(); # 輸出ClassFun,列印類位置
Test.StaticFun(); # 輸出StaticFun
t.StaticFun(); # 輸出StaticFun
t.ClassFun(); # 輸出ClassFun,列印類位置
Test.InstanceFun(); # 錯誤,TypeError: unbound method instanceFun() must be called with Test instance as first argument

Test.InstanceFun(t); # 輸出InstanceFun,列印對象內存地址「」
t.ClassFun(Test); # 錯誤 classFun() takes exactly 1 argument (2 given)
可以看到,在PYTHON中,兩種方法的主要區別在於參數。實例方法隱含的參數為類實例self,而類方法隱含的參數為類本身cls。
靜態方法無隱含參數,主要為了類實例也可以直接調用靜態方法。

所以邏輯上類方法應當只被類調用,實例方法實例調用,靜態方法兩者都能調用。主要區別在於參數傳遞上的區別,實例方法悄悄傳遞的是self引用作為參數,而類方法悄悄傳遞的是cls引用作為參數。
Python實現了一定的靈活性使得類方法和靜態方法,都能夠被實例和類二者調用

F. python的類的靜態成員變數是怎麼定義的

classFoo:
staticVar=0#這個就是靜態變數



如果是靜態方法,可以使用@staticmethod標注。

G. 如何在Python中定義靜態變數

Python使用函數默認值實現函數靜態變數的方法,具體方法如下:
一、Python函數默認值

Python函數默認值的使用可以在函數調用時寫代碼提供方便,很多時候我們只要使用默認值就可以了。 所以函數默認值在python中用到的很多,尤其是在類中間,類的初始化函數中一幫都會用到默認值。 使用類時能夠方便的創建類,而不需要傳遞一堆參數。

只要在函數參數名後面加上 」=defalut_value」,函數默認值就定義好了。有一個地方需要注意的是,有默認值的參數必須在函數參數列表的最後,不允許將沒有默認值的參數放在有默認值的參數後,因為如果你那樣定義的話,解釋器將不知道如何去傳遞參數。

先來看一段示例代碼:

def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
while True:
ok = raw_input(prompt)
if ok in ('y', 'ye', 'yes'): return True
if ok in ('n', 'no', 'nop', 'nope'): return False
retries = retries - 1
if retries < 0: raise IOError, 'refusenik user'
print complaint

你調用上面的函數時,可以修改重試次數和輸出的提示語言,如果你比較懶得話,那麼什麼都不用改。

二、python使用函數默認值來實現函數靜態變數的功能

Python中是不支持靜態變數的,但是我們可以通過函數的默認值來實現靜態變數的功能。
當函數的默認值是內容是可變的類時,類的內容可變,而類的名字沒變。(相當於開辟的內存區域沒有變,而其中內容可以變化)。
這是因為python中函數的默認值只會被執行一次,(和靜態變數一樣,靜態變數初始化也是被執行一次。)這就是他們的共同點。

再來看下面的程序片段:

def f(a, L=[]):
L.append(a)
return L

print f(1)
print f(2)
print f(3)
print f(4,['x'])
print f(5)

其輸出結果是:

[1]
[1, 2]
[1, 2, 3]
['x', 4]
[1, 2, 3, 5]

前面的好理解,為什麼最後 「print f(5)」的輸出是 「[1, 2, 3, 5]」呢?

這是因為 「print f(4,['x'])」時,默認變數並沒有被改變,因為默認變數的初始化只是被執行了一次(第一次使用默認值調用),初始化執行開辟的內存區(我們可以稱之為默認變數)沒有被改變,所以最後的輸出結果是「[1, 2, 3, 5]」。

H. python的類中,如何定義靜態變數和非靜態變數

(1)不能(2)不能

熱點內容
無需伺服器搭建網站 發布:2025-01-22 21:53:34 瀏覽:114
旅遊青蛙安卓版如何下載 發布:2025-01-22 21:52:51 瀏覽:317
歐文5的配置是什麼 發布:2025-01-22 21:30:23 瀏覽:108
日誌存儲資料庫 發布:2025-01-22 21:30:07 瀏覽:474
gulp上傳cdn 發布:2025-01-22 21:27:34 瀏覽:203
emule文件夾 發布:2025-01-22 21:23:23 瀏覽:981
s7e什麼時候推送安卓7 發布:2025-01-22 21:20:59 瀏覽:203
狐狸的清白腳本分析 發布:2025-01-22 21:19:59 瀏覽:182
如何破解仿射密碼 發布:2025-01-22 21:13:53 瀏覽:81
百度視頻存儲 發布:2025-01-22 21:13:11 瀏覽:168