("variables" se refiere aquí a "nombres", creo, no del todo seguro acerca de los Pythonistas definición utilizan)"Pitonica" forma de "reiniciar" las variables de un objeto?
Tengo un objeto y algunos métodos. Todos estos métodos necesitan y todos cambian las variables del objeto. ¿Cómo puedo, de la forma más pitónica y en el mejor de los casos, respetar las técnicas de OOP, lograr las variables de objeto utilizadas por los métodos pero también mantener sus valores originales para los otros métodos?
¿Debo copiar el objeto cada vez que se llama a un método? ¿Debo guardar los valores originales y tener un método de reinicio() para restablecerlos cada vez que un método los necesite? ¿O hay una forma aún mejor?
EDIT: Me pidieron un pseudocódigo. Desde que estoy más interesado en la comprensión del concepto y no sólo resolver específicamente el problema que estoy encontrando que voy a tratar de dar un ejemplo:
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
Lo anterior es mi clase para un objeto Player (para el ejemplo asume que es uno de baloncesto). Este objeto tiene tres métodos diferentes que asignan valores a las estadísticas de los jugadores.
Entonces, digamos que el equipo tiene dos juegos de liga y luego un juego de copa. Tendría que hacer estas llamadas:
p.playLeagueGame()
p.playLeagueGame()
p.playCupGame()
Es obvio que cuando se hacen el segundo y el tercer llamadas, las estadísticas cambiado previamente de que el jugador deba volver a programar. Para eso, puedo escribir un método de reinicio que restablece todas las variables a 0 o copiar el objeto para cada llamada que hago. O haz algo completamente diferente.
Ahí está mi pregunta, ¿cuál es el mejor enfoque, python y oop wise?
ACTUALIZACIÓN: Sospecho que tengo superovercomplicated esto y puedo resolver fácilmente mi problema mediante el uso de variables locales en las funciones. Sin embargo, ¿qué sucede si tengo una función dentro de otra función, puedo usar los locales del exterior dentro del interior?
Podría explicar su intención, el comportamiento deseado? ¿Es el método de encadenamiento, como en jQuery? –
Quizás algún pseudocódigo ayude a explicar por qué es necesario cambiar las variables del objeto pero cambiarlas al final de la función, en lugar de simplemente usar variables locales. – tkerwin
He leído esto algunas veces y todavía no estoy seguro de cómo saber cuándo un método querrá ver los valores actualizados de los miembros y cuándo no. Parece que necesita un patrón Agent, Facade o MVC. –