python類和函式中使用靜態變數的方法

2022-10-03 09:36:11 字數 1011 閱讀 1886

在python的類和函式(包括方法)中使用靜態變數似乎是件不可能[nothing is impossible]的事,

但總有解決的辦法,下面通過實現乙個類或函式的累加器來介紹一些較為非主流的方法

方法一、通過類的__init__和__call__方法

class foo:

def __init__(self, n=0):

self.n = n

def __call__(self, i):

self.n += i

return self.n

a=foo()

print a(1)

print a(2)

print a(3)

print a(4)

方法二、在函式中定義乙個類

def foo2 (n=0):

claswww.cppcns.coms acc:

def __init__ (self, s):

self.s = s

def inc (self, i):

self.s += i

retur程式設計客棧n self.s

return acc (n).inc

a=foo2()

print a(1)

print a(2)

print a(3)

print a(4)

方法三、使用堆上的匿名引數 uecnft

def foo3 (i, l=):

if len(l)==0:

l.append(0)

l[0]+=i

return l[0]

print foo3(1)

print foo3(2)

print foo3(3)

pri foo3(4)

在python官方的2.6環境下執行,

上述三段**得到的結果都是

1 3 uecnft6

10本文標題: python類和函式中使用靜態變數的方法

本文位址:

在類的靜態成員函式中使用類的非靜態成員

我們知道,類的靜態成員函式只能訪問類的靜態資料成員和類的其他靜態函式,eg includeusing namespace std class a static void func2 void func3 int main 如果我們要在類的靜態成員函式中使用類的非靜態成員函式和非靜態資料成員時,可以通...

類中使用靜態資料成員

類的靜態成員,保證每個類只有乙個實體,每個物件中不再有它的副本。由於靜態成員脫離物件而存在的性質,所以該實體應該在所有物件產生之前存在,因此,更適合的時機是在程式啟動的時候,做其初始化。include include using namespace std class student void pr...

類靜態成員和類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...