(我认为,这里的“变量”指的是“名称”,不完全确定pythonistas使用的定义)
我有一个对象和一些方法。这些方法都需要并且都改变对象的变量。我怎样才能以最Pythonic和最好的方式,尊重OOP的技术,实现让方法使用对象变量,同时又保留其他方法的原始值?
每次调用方法时都应该复制对象吗?我是否应该保存原始值并使用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 方面最好的方法是什么?
UPDATE:我怀疑我把这个问题变得超级复杂了,我可以通过在函数中使用局部变量轻松解决我的问题。但是,如果我在另一个函数中有一个函数,会发生什么情况,我可以在内部函数中使用外部函数的局部变量吗?