我想在我的Python程序中實現某種單例模式。我正在考慮不使用課程的做法;也就是說,我想將所有與單例相關的函數和變量放在一個模塊中,並將其視爲一個實際的單例。Python:將模塊及其變量作爲單例思考 - 乾淨的方法?
例如,說這是要在文件「singleton_module.py」:
# singleton_module.py
# Singleton-related variables
foo = 'blah'
bar = 'stuff'
# Functions that process the above variables
def work(some_parameter):
global foo, bar
if some_parameter:
bar = ...
else:
foo = ...
然後,程序的其餘部分(即,其他模塊)將使用此單像這樣:
# another_module.py
import singleton_module
# process the singleton variables,
# which changes them across the entire program
singleton_module.work(...)
# freely access the singleton variables
# (at least for reading)
print singleton_module.foo
這似乎是一個不錯的主意,我,因爲它看起來在使用的單模塊很乾淨上。
但是,單例模塊中所有這些單調乏味的'全局'語句都很醜陋。它們發生在處理單身相關變量的每個函數中。在這個特定的例子中,這並不是很多,但是當你有10個以上的變量需要管理幾個函數時,這並不好。
此外,如果您碰巧忘記了全局語句,這很容易出錯:函數的局部變量將被創建,並且模塊的變量不會被更改,這不是您想要的!
那麼,這會被認爲是乾淨的?有沒有類似於我的方法來消除'全球'混亂?
或者這是不是要走的路?
爲什麼你首先需要一個單身人士。看起來90%認爲他們想/需要單身人士的人真的沒有。 – delnan 2011-06-06 16:28:06
嗯,當然我不需要*單身。我曾經使用過一個類,它工作得很好,但我想,因爲我只有這個特定類的一個實例,我不能讓它成爲一個單例嗎? – 2011-06-06 16:32:11
好吧,既然你已經找出了單身人士的一個問題,我會說班級勝利;) – delnan 2011-06-06 16:36:50