@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, для переменной которую вы намерены изменять?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
24 апр. 2024, в 22:30
200000 руб./за проект
24 апр. 2024, в 22:11
2000 руб./за проект
24 апр. 2024, в 21:49
10000 руб./за проект