Ho una classe con un membro di dati complessi che voglio mantenere "statico". Voglio inizializzarlo una volta, usando una funzione. Come Pythonic è qualcosa di simile:Pythonic Way inizializzare (Complex) membri di dati static
def generate_data():
... do some analysis and return complex object e.g. list ...
class Coo:
data_member = generate_data()
... rest of class code ...
La funzione generate_data
richiede molto tempo per completare e restituisce i dati che rimane costante nel campo di applicazione di un programma in esecuzione. Non voglio che venga eseguito ogni volta che viene creata un'istanza di Coo.
Inoltre, per verificare, finché io non assegnare nulla per data_member
in __init__
, rimarrà "statico"? Cosa succede se un metodo in Coo aggiunge un valore a data_member
(supponendo che sia un elenco) - questa aggiunta sarà disponibile per il resto delle istanze?
Grazie
L'unica cosa non-Python di quel codice è usare un identificatore minuscolo per un nome di classe. –
@Card: Certo che hai ragione, l'ho cambiato :) –