@Aeolloups

Почему не получается передать значение в экземпляр класса?

Создал экземпляр класса и импортировал его, и когда передаю ему значение, возникает ошибка "NameError: name 'screen' is not defined" , когда пытаюсь передать объект в функцию класса.
self.ship = Ship(screen). Почему он его не видит?
import sys,pygame
from set import Settings
from ship import Ship

class Aliens:
    def __init__(self):
        pygame.init()

        self.settings = Settings()
        self.screen = pygame.display.set_mode((self.settings.w, self.settings.h))
        
        pygame.display.set_caption('asdsad')
        self.ship = Ship(screen)

    def run(self):
        while True:
            for event in pygame.event.get():
                print(event)
                if event.type == pygame.QUIT:
                    sys.exit()
            self.screen.fill(self.settings.bg_color)
            self.ship.blitme()
            pygame.display.flip()

if __name__ == '__main__':
    ai = Aliens()
    ai.run()
  • Вопрос задан
  • 213 просмотров
Пригласить эксперта
Ответы на вопрос 2
Maksim_64
@Maksim_64
Data Analyst
А почему он должен? Где ты объявил screen? У тебя есть self.screen, вот его и передавай.
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
self.ship = Ship(screen)
Ты пытаешься передать в конструктор Ship() локальную переменную screen, которой у тебя нет.
Тут не C#, если обращаешься к полям класса - явно указывай self.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы