Я пишу PyQt-приложение среднего размера (несколько KLOC).Я начал писать его в хороших модулях для простоты понимания, но я изучаю правила пространств имен Python.В нескольких моментах важно создать экземпляр только одного объекта класса в качестве ресурса для другого кода.
Например: объект, представляющий Aspell, присоединен как подпроцесс, предлагая метод check (word).Другой пример: в приложении имеется один QTextEdit, а другой код должен вызывать методы этого единственного объекта, например, «if theEditWidget.document (). IsEmpty () ...»
. Не важно, где я это создаюобъект, на него можно ссылаться только из кода в этом модуле и ни в каком другом.Так, например, код виджета редактирования не может вызывать объект шлюза Aspell, если объект Aspell не создан в том же модуле.Прекрасно, за исключением того, что это необходимо и для других модулей.
В предлагается этот вопрос связка класс, но, как мне кажется, связка имеет точно такую же проблему:это уникальный объект, который можно использовать только в том модуле, где он создан.Или я полностью скучаю по лодке здесь?
Хорошо, предложено в другом месте, это кажется простым ответом на мою проблему.Я только что проверил следующее:
junk_main.py:
import junk_A
singularResource = junk_A.thing()
import junk_B
junk_B.handle = singularResource
print junk_B.look()
junk_A.py:
class thing():
def __init__(self):
self.member = 99
junk_B.py:
def look():
return handle.member
Когда я запускаю junk_main, он печатает 99. Таким образом, основной код может вводить имена в модули просто по присваиванию.Я пытаюсь придумать причины, по которым это плохая идея.