Приветствия! Я создаю простую змеиную игру. Я хочу расширить свои классы в разных модулях e.i. есть класс меню в отдельном скрипте из моего основного игрового цикла. Другими словами, я хочу, чтобы мой импортированный скрипт взял pygame init, который был вызван ранее в главном скрипте.Использование модуля Pygame из импортированного скрипта
Вот краткий пример использования псевдо-кода моей проблемы:
one.py
def version():
print pygame.version
В main.py я импортировал Pygame и не pygame.init(). Отсюда, я также хочу использовать версию четкости() из one.py
main.py
import pygame
import one
pygame.init()
one.version()
Однако, это дает мне определенную ошибку нет Pygame. Я знаю причину, по которой он дает мне ошибку, потому что, когда one.py вызывается из main.py, он не сохраняет декларации из main.py.
Что я хочу знать, это способ выполнения вышеупомянутых действий, который действительно будет работать.
Спасибо!
Я подумал об этом; но эффективна ли она? Если я поеду по этому маршруту, мне придется импортировать Pygame в каждом модуле по мере необходимости. Возможно, если бы я создал отдельный модуль, который имеет функцию, которая импортирует Pygame при вызове? – user577317
@ user577317: Да, это эффективно. Создание отдельного модуля бессмысленно, потому что вместо этого вам придется импортировать это. –
@ user577317: Вы не можете манипулировать пространством имен вызывающего абонента (ну, может быть, вы можете, но это будет ненадежный взлом, возьмите значительную работу и на самом деле это плохая идея). ** Просто имейте их **, ради бога. Этот вопрос является еще одним примером того, почему оптимизация без понимания бессмысленна и вредна;) Импорт модуля, который уже был импортирован (в текущем запущенном процессе интерпретатора - вы, как правило, только один для одной программы, конечно) просто дает вам ссылку на уже импортированный модуль. То есть нет неэффективности. – delnan