( "переменные" здесь относятся к "именам", я думаю, не совсем уверен в использовании определения pythonistas)
У меня есть объект и некоторые методы. Этим методам все нужны и все изменяют переменные объекта. Как я могу, в большинстве питонов и в лучшем случае уважать методы ООП, добиться того, чтобы переменные объекта использовались методами, но также сохраняли свои исходные значения для других методов?
Должен ли я копировать объект каждый раз, когда вызывается метод? Должен ли я сохранять исходные значения и использовать метод reset() для 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()
Очевидно, что при выполнении второго и третьего вызовов ранее измененная статистика игрока должна быть reset. Для этого я могу либо написать метод reset, который возвращает все переменные в 0, либо скопировать объект для каждого вызова, который я делаю. Или сделать что-то совершенно другое.
Что, где мой вопрос лежит, какой лучший подход, python и oop wise?
ОБНОВЛЕНИЕ: Я подозреваю, что у меня есть superovercomplicated это, и я могу легко решить мою проблему, используя локальные переменные в функциях. Однако, что произойдет, если у меня есть функция внутри другой функции, могу ли я использовать локали внешнего во внутреннем?