我正在使用Python來自動化一個複雜的程序,它有很少的選項。 我想在python中有以下結構。 - 一個包含流程的「流程類」 - 一個包含大量「黑匣子」(常常不會更改的功能)的幫助類。Python設計模式,交叉導入
99%的時間,我在flow-class中修改了一些東西,所以我只想要那些經常修改的代碼,所以我不必滾動很多來找到我想要修改的代碼。該類還包含經常發生變化的全局變量(配置設置)。助手類包含不經常改變的全局變量。
在流程類中,我有一個全局變量,我希望用戶在每次運行時都被強制輸入。這條線看起來像這樣。 打印(「你想看到調試輸出(輸入=否)?」) 調試= getUserInput()
的getUserInput()函數應設在輔助類,因爲它永遠不會改變。 getUserInput需要flow類中的全局變量,它指示用戶輸入是否應與Linux命令行或Eclipse(在Windows上運行)保持一致。
我的問題是:我怎樣才能以最好的方式來構造這個?目前,它看起來如下: 流量級:
import helper_class
isLinux = 1
debug = getUserInput()
助手類:
import os, flow_class
def getUserInput():
userInput = input()
if (flow_class.isLinux == 1):
userInput = userInput[:-1]
return userInput
目前這給了我下面的錯誤由於交叉進口:
Traceback (most recent call last):
File "flow_class.py", line 1, in <module>
import helper_class
File "helper_class.py", line 1, in <module>
import os, flow_class
File "flow_class.py", line 5, in <module>
debug = getUserInput()
NameError: name 'getUserInput' is not defined
我知道我明顯可以通過將isLinux作爲getUserInput的參數來解決這個問題,但是這使得這個方法的使用變得複雜,並且使得它更不直觀。
只要每個方法的參數少於5個,參數就很好,如果有多個參數則需要其他參數。 「 」參數意味着經常更改,但不能被硬編碼,請嘗試使用配置文件。「我看不到如何使用配置文件改變一般設計問題。 非常感謝「控制器/模型」文章的鏈接,我會仔細研究它。 – David 2009-08-26 12:10:08
如果您確實有很多參數,或者它們與某個區域相關(因此可以分組爲一個消息傳遞對象),您可能有太多的功能。 – 2009-08-26 17:26:57