Я использую Python для автоматизации сложной процедуры, которая имеет несколько вариантов.
Я хочу иметь следующую структуру в Python.
- Один «класс потока», содержащий поток
- Один вспомогательный класс, который содержит много «черных ящиков» (функции, которые не часто меняются).
99% времени я изменяю вещи в потоке-классе, поэтому мне нужен только код, который часто изменяется, поэтому мне не нужно много прокручивать, чтобы найти код, который я хочу изменить. Этот класс также содержит глобальные переменные (параметры конфигурации), которые часто меняются. Вспомогательный класс содержит глобальные переменные, которые не часто меняются.
В классе потока у меня есть глобальная переменная, которую я хочу, чтобы пользователь принудительно вводил при каждом запуске. Линия выглядит следующим образом.
print («Хотели бы вы увидеть отладочный вывод (enter = no)?»)
debug = getUserInput ()
Функция getUserInput () должна быть расположена во вспомогательном классе, поскольку она никогда не изменяется. Для getUserInput нужна глобальная переменная из класса потока, которая указывает, должен ли пользовательский ввод соответствовать командной строке 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, но это усложняет использование этого метода и делает его менее интуитивным.