("переменные" здесь относятся к "именам", я думаю, не совсем уверен в определении, которое используют питонисты)
У меня есть объект и несколько методов. Все эти методы нуждаются и все изменяют переменные объекта. Как я могу, в наиболее питоническом и в лучшем случае, соблюдая методы ООП, добиться того, чтобы объектные переменные использовались методами, но также сохраняли их исходные значения для других методов?
Должен ли я копировать объект каждый раз, когда вызывается метод? Должен ли я сохранять исходные значения и иметь метод reset() для их сброса каждый раз, когда они нужны методу? Или есть еще лучший способ?
EDIT: меня попросили ввести псевдокод. Поскольку меня больше интересует понимание концепции, а не просто конкретное решение проблемы, с которой я сталкиваюсь, я попытаюсь привести пример:
class Player():
games = 0
points = 0
fouls = 0
rebounds = 0
assists = 0
turnovers = 0
steals = 0
def playCupGame(self):
# simulates a game and then assigns values to the variables, accordingly
self.points = K #just an example
def playLeagueGame(self):
# simulates a game and then assigns values to the variables, accordingly
self.points = Z #just an example
self.rebounds = W #example again
def playTrainingGame(self):
# simulates a game and then assigns values to the variables, accordingly
self.points = X #just an example
self.rebounds = Y #example again
Выше приведен мой класс для объекта Player (например, предположим, что он играет в баскетбол). Этот объект имеет три различных метода, которые присваивают значения статистике игроков.
Итак, допустим, у команды две игры в лиге, а затем кубковая игра. Я должен был бы сделать эти звонки:
p.playLeagueGame()
p.playLeagueGame()
p.playCupGame()
Очевидно, что при втором и третьем звонках необходимо сбросить ранее измененную статистику игрока. Для этого я могу либо написать метод сброса, который устанавливает все переменные обратно в 0, либо копировать объект для каждого вызова, который я делаю. Или сделать что-то совершенно другое.
Вот где лежит мой вопрос, какой лучший подход, python и oop мудрый?
ОБНОВЛЕНИЕ: я подозреваю, что слишком усложнил это, и я могу легко решить свою проблему, используя локальные переменные в функциях. Однако что произойдет, если у меня есть функция внутри другой функции, могу ли я использовать локальные переменные внешней функции внутри внутренней?