def update_screen()
является только определением, и Python не проверяет правильность переменных в определении. Он будет проверять переменные при выполнении этой функции. Кроме того, ship
в update_screen()
- это только локальная переменная, которую вы получаете в качестве аргумента в def update_screen(..., ship)
, поэтому вы не можете напрямую обращаться к ship.blitme()
из другого файла.
Я ожидаю, что вы импортируете этот код в другойфайл и в другом файле вы выполняете его с экземпляром класса Ship
, определение которого вы имеете в другом файле. Затем Python назначит существующие экземпляры Ship
локальной переменной ship
внутри update_screen(..., ship)
и будет использовать методы blitme()
из этого экземпляра.
То же самое с ai_settings
и ai_setting.bg_color
.
Что касается flip()
- вы импортируете pygame
в этот файл, а он импортирует pygame.display
, поэтомупрямой доступ к pygame.display.flip()
в этом файле.