#python #game-development
#python #разработка игр
Вопрос:
Я пытаюсь создать атрибуты объекта, которые могут быть изменены позже в зависимости от вводимых пользователем данных
Суть в том, что я пытаюсь создать текстовую RPG со статистикой. Я сделал игрока объектом класса со статистикой, такой как «HP», «AC», «Сила» и тому подобное.
Основная часть игры — это возможность взаимодействия характеристик друг с другом. Например, «AC» игрока вычисляется путем добавления 10 и их модификатора «Dex»
Я хочу позволить игроку выбирать свой ‘Dex’, поэтому мне нужно иметь возможность соответствующим образом изменять атрибуты объекта
Однако Python, похоже, не распознает математику, которую я в него вкладываю.
class Test:
def __init__(self):
self.x = 1
self.y = 2
self.z = self.x self.y
test = Test()
test.y = 7
print(str(test.z))
печать дает мне ‘3’
Как я могу сделать так, чтобы он выдавал мне ‘8’?
Ответ №1:
Если вы хотите, чтобы значение атрибута вычислялось при доступе, это задача для @property
декоратора, рассмотрим следующий пример:
class Player:
def __init__(self):
self.x = 1
self.y = 2
@property
def z(self):
return self.x self.y
player1 = Player()
player1.y = 7
print(player1.z)
Вывод:
8
Если вы хотите узнать больше о декораторах в python, я предлагаю прочитать realpython Primer о декораторах python.
Комментарии:
1. Спасибо за быстрый ответ. Сейчас я нахожусь примерно в 2:45 утра, эта проблема не дает мне спать допоздна, поэтому я попробую это утром… ошибочный день, я думаю. Еще раз спасибо!
2. Это сработало! Спасибо миллион. Теперь я собираюсь прочитать руководство и выяснить, ПОЧЕМУ это сработало. лол