我正在處理來自python中的串行端口的數據。第一個字節表示消息的開始,然後第二個字節表示它是什麼類型的消息。根據第二個字節,我們在消息中讀取的內容是不同的(爲了說明不同類型的消息,有些僅僅是其他字符串等數據)。關於在Python中殺死交換機
我現在有以下結構。我有一個通用的Message類,它包含每種類型消息的基本函數,然後包含表示不同類型消息(例如DataMessage或StringMessage)的派生類。這些有自己特定的讀取和打印功能。
在我的read_value_from_serial中,我讀取了所有的字節。現在我使用下面的代碼(這是壞的)來確定消息是DataMessage還是StringMessage(有大約6種不同類型的消息,但我簡化了一下)。
msg_type = serial_port.read(size=1).encode("hex").upper()
msg_string = StringMessage()
msg_data = StringData()
processread = {"01" : msg_string.read, "02" : msg_data.read}
result = processread[msg_type]()
現在我想簡化/改進這種類型的代碼。我已閱讀關於殺死交換機的消息,但我不喜歡它,我不得不創建最終不會使用的對象。有什麼建議可以改善這個特定問題?
謝謝
您能提供一個「殺死開關」的想法的參考或鏈接?一些可能對你有用的switch語句的替代方法可以在[Python中的switch語句的替換?]中找到(http://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python ?RQ = 1)。 – Simon
你好,我實際上使用該鏈接來實現我的代碼。我遇到的問題是我不喜歡這個解決方案,並且應該有另一種更好的方式來處理我的問題。我認爲我的標題有點誤導,因爲我實際上正在尋找我當前的解決方案的替代品,這些替代品不那麼難看,也不需要創建任何對象。 – DanFritz