Ho un software OOP basato su GUI relativamente grande (in Python) se fossi strongmente dipendente dal mantenere i riferimenti in tutto il programma. Ad esempio definirei una classe Main con alcune opzioni memorizzate come attributo (esempio di codice seguente). In una seconda classe, ad es. OptionFrame I passerebbe il riferimento a quell'oggetto di opzioni memorizzato e lo memorizzerò di nuovo come un attributo. Questo ha il grande vantaggio che se cambio le opzioni memorizzate in OptionFrame verrà cambiato anche in Main. Tuttavia recentemente ho creato l'intero programma scrivendo una funzione che reinizializza le opzioni memorizzate e quindi gli diamo un nuovo riferimento, come reset_options_bad nell'esempio seguente. Pertanto i due oggetti opzione in OptionFrame e Main non erano più connessi e il mio programma non funzionava più.
Questa decisione di progettazione era basata su passaggi di riferimento e su di essi è stata utile una buona idea?
Class OptionFrame:
def __init__(self,options):
self.options=options
def change_options(self):
self.options['example']=False # This should also change the options in main
class Main:
def __init__(self):
self.stored_options = {'example':True}
self.option_frame = OptionFrame(self.stored_options)
def reset_options_bad(self):
self.stored_options = {'example':True} # This is a bad idea
def reset_options_good(self):
self.stored_options.clear()
self.stored_options.update({'example':True})
self.stored_options