@oledjigames

Python переменная в классе не присвоивается глобальной, что не так?

Когда происходит self.choice_var = (0, 1) или (1, 0) но choice_1 не меняется на (0, 1) или (1, 0) а остается изначальным choice_1 = 0, 0 почему?
choice_1 = (0, 0)

class choice:
def __init__(self,level_num, text1, text2, choice_var, background, player, player_x, player1, player1_x):
     self.level_num = level_num
     self.text1 = text1
     self.text2 = text2
     self.choice_var = choice_var
     self.background = background
     self.player = player
     self.player_x = player_x
     self.player1 = player1
     self.player1_x = player1_x
     self.show()
def show(self):
    if level_selected==(self.level_num):
        screen.blit(self.background,(0, 0))
        screen.blit(self.player, (self.player_x, 0))
        screen.blit(self.player1, (self.player1_x, 0))
        screen.blit(choice_pic,(0, 0))
        if mousey<=(295):
            text_choice_1 = font1.render(self.text1, 1, YELLOW)#РАБОТАЕТ
            text_choice_2 = font1.render(self.text2, 1, WHITE)#РАБОТАЕТ
            self.choice_var = (1, 0)# ВОТ ЗДЕСЬ ЭТО НЕ РАБОТАЕТ
        elif mousey>=(295):
            text_choice_2 = font1.render(self.text2, 1, YELLOW)#РАБОТАЕТ
            text_choice_1 = font1.render(self.text1, 1, WHITE)#РАБОТАЕТ
            self.choice_var = (0, 1) # ВОТ ЗДЕСЬ ЭТО НЕ РАБОТАЕТ
        screen.blit(text_choice_1,(452, 233))
        screen.blit(text_choice_2,(452, 320))
        pygame.display.update()
    pass

И ещё в цикле линия которая вызывает эту функцию
dialog1 = choice(9, "yes", "no", choice_1, background2, player0, 120, player1, -120)
    dialog1.show()
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
sswwssww
@sswwssww
choice_1 = (0, 0)
- choice_1 это tuple.
В Python tuple неизменяемый тип данных, вам, наверное нужен тип данных list, он изменяемый(choice_1 = [0, 0], и соответственно в классе тоже заменить () на [] там где это нужно). А вообще, странно вы как-то изучаете этот ЯП, пропустив основы языка сразу ринулись к классам.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@grieverrr
а что вас сподвигло использовать иммутабельный тип tuple, для переменной которую вы намерены изменять?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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