Потому что у тебя и в самом деле нету локальной или глобальной переменной screen.
Ты объявляешь self.screen, а это - поле класса.
В отличие от многих других ЯП, питон требует явного указания self при доступе к полям класса из его методов, и не позволяет обращаться к ним, как к локальным переменным.
Так что и далее в методах Ship придётся использовать self.screen.