iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
Software Development

Python GUI 專案設計模式及好用的開發技巧系列 第 14

好用的Decorator 如何在class中使用?

Decorator是什麼?
Python Decorator 機制是為了讓你在定義函式與方法之後,可以用簡單的方式來修改並重新定義。
引用自Decorator 裝飾器初探

裝飾器,最簡單的理解就是額外的效果。類似在遊戲中只要戴了什麼配件之後就會出現哪些特殊的效果,這就是裝飾器最大的用處。

裝飾器在Class 中無法使用的原因是沒有把Self 傳入,所以會報錯
解法:

  1. 寫一個功能然後把Self 傳入當成args[0] 就可以解決這問題
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()
        ...
        ...
        
        

結論:
網路上還有很多種作法,但就看自己如何選擇哪個好用的方式了,筆者用偷懶的方式做了一個。


上一篇
快樂打包又很坑的pyinstaller
下一篇
純手工打造UART間的資料清洗工具II - 在一個檔案中同時存取兩個UART的方法
系列文
Python GUI 專案設計模式及好用的開發技巧31

尚未有邦友留言

立即登入留言