我的游戏中有这个方法,在 vscode 中我从 pylint 收到无法访问的代码警告。
def _check_buttons(self, mouse_pos):
"""Check for buttons being clicked and act accordingly."""
buttons = {
self.play_button.rect.collidepoint(mouse_pos):
lambda: (self._reset_game(),
setattr(self, 'show_difficulty', False),
setattr(self, 'show_high_scores', False),
setattr(self, 'show_game_modes', False)),
self.quit_button.rect.collidepoint(mouse_pos):
lambda: (pygame.quit(), sys.exit()),
self.menu_button.rect.collidepoint(mouse_pos):
self.run_menu,
self.high_scores.rect.collidepoint(mouse_pos):
lambda: setattr(self, 'show_high_scores', not self.show_high_scores),
self.game_modes.rect.collidepoint(mouse_pos):
lambda: setattr(self, 'show_game_modes', not self.show_game_modes),
self.endless_button.rect.collidepoint(mouse_pos):
lambda: (setattr(self.settings, 'endless', not self.settings.endless),
setattr(self, 'show_game_modes', False)),
self.easy.rect.collidepoint(mouse_pos):
lambda: (setattr(self.settings, 'speedup_scale', 0.3),
setattr(self, 'show_difficulty', False)),
self.medium.rect.collidepoint(mouse_pos):
lambda: (setattr(self.settings, 'speedup_scale', 0.5),
setattr(self, 'show_difficulty', False)),
self.hard.rect.collidepoint(mouse_pos):
lambda: (setattr(self.settings, 'speedup_scale', 0.7),
setattr(self, 'show_difficulty', False)),
self.difficulty.rect.collidepoint(mouse_pos):
lambda: setattr(self, 'show_difficulty', not self.show_difficulty)
}
for button_clicked, action in buttons.items():
if button_clicked and not self.stats.game_active:
action()
警告在最后的for循环中,我以为是因为button_clicked始终为True,我尝试将其换成:if not self.stats.game_active and button_clicked,但警告仍然存在。为什么?