Decorator是什麼?
Python Decorator 機制是為了讓你在定義函式與方法之後,可以用簡單的方式來修改並重新定義。
引用自Decorator 裝飾器初探
裝飾器,最簡單的理解就是額外的效果。類似在遊戲中只要戴了什麼配件之後就會出現哪些特殊的效果,這就是裝飾器最大的用處。
裝飾器在Class 中無法使用的原因是沒有把Self 傳入,所以會報錯
解法:
def initComomPortCheck(f):
def warp(*args):
ret = f(*args)
args[0].comPortCheck()
return ret
return warp
def comPortCheck(self):
"""Pre-check if the com port is avaiable or not
Usage:
@pre_comPortCheck
def ....
"""
ports = [port[0] for port in serial.tools.list_ports.comports()]
if not len(self.ui.le_ComID.text()) > 0:
print("Error")
return
if "COM{0}".format(self.ui.le_ComID.text()) in ports:
print("connected")
else:
print("disconnect")
return
Class xxx():
....
....
@initComomPortCheck
def func()
...
...
結論:
網路上還有很多種作法,但就看自己如何選擇哪個好用的方式了,筆者用偷懶的方式做了一個。