(«переменные» здесь относятся к «именам», я думаю, не совсем уверен в определении, которое используют pythonistas)
У меня есть объект и несколько методов . Все эти методы требуют и все изменяют переменные объекта. Как я могу самым питоническим и лучшим образом, соблюдая методы ООП, добиться того, чтобы переменные объекта использовались методами, но при этом сохраняли их исходные значения для других методов?
Должен ли я копировать объект каждый раз метод называется? Следует ли мне сохранять исходные значения и использовать метод reset () для их сброса каждый раз, когда они нужны методу? Или есть еще лучший способ?
РЕДАКТИРОВАТЬ: Меня попросили ввести псевдокод. Поскольку меня больше интересует понимание концепции, а не просто конкретное решение проблемы, с которой я сталкиваюсь, я попытаюсь привести пример:
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, или копировать объект для каждого моего вызова. Или сделайте что-нибудь совершенно другое.
Вот где мой вопрос, как лучше всего,
ОБНОВЛЕНИЕ: Я подозреваю, что я слишком усложнил это, и я могу легко решить свою проблему, используя локальные переменные в функциях. Однако что произойдет, если у меня есть функция внутри другой функции, могу ли я использовать локальные переменные внешнего элемента внутри внутреннего?