我有一個Python腳本,可以從命令行調用並使用
optparse
。作爲模塊和可執行文件的腳本script -i arg1 -j arg2
在這種情況下,我使用
(options, args) = parser.parse_args()
創建options
然後使用options.arg1
得到論證。但我也希望它可以作爲模塊導入。
from script import * function(arg1=arg1, arg2=arg2)
我已經設法做到這一點,使用一個非常蹩腳的解決方案:通過提供一個虛擬對象。
def main(): class Options: ''' dummy object ''' def __init__(self): pass options = Options for k in kwargs: setattr(options, k, kwargs[k])
腳本的其餘部分不知道其中的差別,但我認爲這種解決方案的fugly。
有沒有更好的解決方案呢?
'對於k在** kwargs:'?你能粘貼你使用的實際代碼嗎? – 2010-07-27 21:25:23
這實際上不是一個壞的解決方案。儘管只是FYI,但您可以刪除__init__,並且只有「class Options:pass」。我經常想知道爲什麼Python沒有帶一個內置的「空類」來讓你設置它的任何屬性,就像你不能用普通的'object()'做的那樣。 – 2010-07-27 21:29:18