python中staticmethod裝飾器的作用

2022-04-29 04:24:11 字數 1664 閱讀 6200

python中的staticmethod裝飾器(decorator)主要是方便將外部函式整合到類體中, 美化**結構, 重點在可以不需要類例項化的情況下呼叫方法

如果去掉staticmethod,在方法中加self也可以通過例項化訪問方法也是可以整合**

1. 不使用staticmethod的**如何寫的:

ind = 'on'

defcheckind():

return (ind== 'on'

)class

kls(object):

def__init__

(self, data):

self.data =data

defde_reset(self):

ifcheckind():

print ( '

reset done for:

' +self.data )

defset_db(self):

ifcheckind():

self.db = '

new db connection

'print ( '

db connection made for:

' +self.data )

ik1 = kls(12)

ik1.do_reset()

ik1.set_db()

結果:reset done for: 12

db connection made for: 12

2. 使用staticmethod的**,用staticmethod包裝的方法可以內部呼叫, 也可以通過類訪問或類例項化訪問:

ind = 'on'

class

kls(object):

def__init__

(self, data):

self.data =data

@staticmethod

#加了@staticmethod,把外部方法整合到類體

defcheckind():

return (ind== 'on'

)

defde_reset(self):

ifcheckind():

print ( '

reset done for:

' +self.data )

defset_db(self):

ifcheckind():

self.db = '

new db connection

'print ( '

db connection made for:

' +self.data )

ik1 = kls(12)

ik1.do_reset()

ik1.set_db()

print

(ik1.checkind())

print(kls.checkind())

結果:reset done for: 12

db connection made for: 12

true

true

兩個**的區別後者是加了@staticmethod, 把方法checkind()放入類中,既有在類內呼叫,也可以在類外通過類來呼叫(不一定要例項化)

python中 python中的 與

這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...

python中否定for 在python中否定函式

有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...

python中雙重迴圈 加速Python中的雙迴圈

有沒有辦法加快從上一次迭代更新其值的雙迴圈?在 中 def calc n,m x 1.0 y 2.0 container np.zeros n,2 for i in range n for j in range m x np.random.gamma 3,1.0 y y 4 y np.random....