2016-06-10 4 views
-1

У меня есть программа Python A, которая импортирует другую программу B.Импортированная функция вызова функции из исходного файла

Программа имеет функцию foo и основные классы и глобальные переменные и т.д.

Программа B имеет функцию bar.

Основная функция программы «s побежал ввод данных пользователем во время выполнения находится бар, так звонки бар: B.bar(stuff).

B.bar() пытается позвонить A.foo(). Каков правильный способ сделать это?

+0

Зачем вам это дизайн? Он просто просит неприятностей. Поместите 'foo()' и 'bar()' в тот же файл. – MattDMo

+0

программа b записывается пользователем для предварительной обработки перед вызовом функции. Я предполагаю, что B может просто вернуть имя foo, и A может вызвать его после возвращения – channon

ответ

0

Правильный способ состоит в том, чтобы избежать этого как можно больше, например. есть третий скрипт C, содержащий foo, чтобы избежать кругового движения.

Обойти иначе, чтобы написать B так:

def bar(): 
    from A import foo 
    foo() 

и не импортировать A на верхнем уровне. Таким образом, импорт происходит только тогда, когда вызывается bar, поэтому A уже полностью загружен, и вы не получите ошибку импорта.

Смежные вопросы