("variabili" qui si riferisce a "nomi", penso, non del tutto sicuro circa i Pythonisti definizione utilizzano)Modo "Pythonic" per "resettare" le variabili di un oggetto?
ho un oggetto e alcuni metodi. Questi metodi hanno tutti bisogno e cambiano tutte le variabili dell'oggetto. Come posso, nel modo più poderoso e nel migliore dei casi, rispettare le tecniche di OOP, come ottenere le variabili oggetto utilizzate dai metodi ma anche mantenere i loro valori originali per gli altri metodi?
Devo copiare l'oggetto ogni volta che viene chiamato un metodo? Devo salvare i valori originali e avere un metodo reset() per resettarli ogni volta che un metodo li richiede? O c'è un modo ancora migliore?
MODIFICA: Mi è stato richiesto lo pseudocodice. Dato che io sono più interessato a comprendere il concetto e non solo specificamente risolvere il problema che sto incontrando ho intenzione di provare a fare un esempio:
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
Quanto sopra è la mia classe per un oggetto Player (per l'esempio assumere lui è un pallacanestro). Questo oggetto ha tre diversi metodi che assegnano tutti i valori alle statistiche dei giocatori.
Quindi, diciamo che la squadra ha due partite di campionato e poi una partita di coppa. Avrei dovuto effettuare queste chiamate:
p.playLeagueGame()
p.playLeagueGame()
p.playCupGame()
E 'ovvio che quando la seconda e la terza chiamate sono fatti, le statistiche precedentemente modificate del giocatore devono essere reimpostati. Per questo, posso scrivere un metodo di reset che riporta tutte le variabili a 0, o copiare l'oggetto per ogni chiamata che faccio. O fai qualcosa di completamente diverso.
Ecco dove risiede la mia domanda, qual è l'approccio migliore, python e oop wise?
UPDATE: Sono sospettoso di averlo complicato in maniera eccessiva e posso facilmente risolvere il problema utilizzando le variabili locali nelle funzioni. Tuttavia, cosa succede se ho una funzione all'interno di un'altra funzione, posso usare i locali di quella esterna all'interno di quella interna?
Potrebbe spiegare il vostro intento, il comportamento desiderato? Il metodo è concatenato, come in jQuery? –
Forse qualche pseudocodice potrebbe aiutare a spiegare perché è necessario modificare le variabili oggetto ma cambiarle alla fine della funzione, invece di usare solo variabili locali. – tkerwin
Ho letto alcune volte e non sono ancora sicuro di come dire quando un metodo vorrà vedere i valori dei membri aggiornati e quando non lo farà. Sembra che abbia bisogno di un pattern Agent, Facade o MVC. –