Я хотел бы реализовать какой-то шаблон синглтона в моей программе на 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 переменных для управления несколькими функциями, это не очень красиво.
Кроме того, это довольно подвержено ошибкам, если вы забыли глобальные операторы: переменные локальныек функции будет создан, и переменные модуля не будут изменены, а это не то, что вы хотите!
Итак, это будет считаться чистым?Есть ли подход, подобный моему, который позволяет покончить с «глобальным» беспорядком?
Или это просто не тот путь?