Импорт классов из другого файла в Python

#python

#питон

Вопрос:

Я недавно начал изучать Pygame (модуль Python). Мой проект Pygame сейчас становится довольно продолжительным — настолько, что в нем трудно ориентироваться. В предыдущих проектах на python я мог просто хранить большинство функций в отдельных файлах python, которые затем импортирует основной файл.

Например, в главном файле:

 pygame.init() screen = pygame.display.set_mode((WIDTH, HEIGHT)) import second_file second_file.run()  

И во втором файле:

 def run():  screen.fill([0, 255, 255])  

Я хочу сохранить функцию во втором файле, но эта функция должна иметь возможность взаимодействовать с тем же окном Pygame, что и основной файл. Когда он пытается сделать это в настоящее время, он возвращает сообщение об ошибке, сообщающее мне, что имя экрана основного файла не определено.

Любая помощь в том, как я мог бы обойти эту проблему, была бы очень признательна!

Комментарии:

1. Пример не отражает проблему. screen В этом примере такого нет. В любом случае, вам нужно передать screen функцию. например: def run(screen): и second_file.run(screen)

2. Добро пожаловать в Stack Overflow. Как бы вы решили эту проблему, если бы функция находилась в одном файле, а не импортировалась?

3. Пусть функции в другом файле python принимают аргументы. Затем, когда вы вызываете их, передайте значения, которые вы хотите, в качестве аргументов.

Ответ №1:

Есть несколько способов сделать это. Вероятно, лучшим способом сделать это было бы передать экран в качестве параметра функции следующим образом: second_file:

 def run(screen):  screen.fill((0, 255, 255))  

И в основном:

 pygame.init() screen = pygame.display.set_mode((WIDTH, HEIGHT)) import second_file second_file.run(screen)  

Или, в качестве альтернативы, вы можете сделать экран глобальным и импортировать его из основного файла. Но я не рекомендую этот метод. И если вы выберете этот метод, следите за циклическим импортом (основной импорт из second_file и импорт второго файла из main).