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()
(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....