Allocazione dinamica attributi
Riporto gli appunti e le considerazioni fatte nel processo di lavoro senza alterare l’autenticità del diario.
Allocazione dinamica degli attributi in funzione delle chiavi del dizionario.
def generaAttributi(self):
for i, (chiave, valore) in enumerate(self.lista_tuples[4:], start=3):
setattr(self, chiave, valore) # Assegna dinamicamente l'attributo
# Crea dinamicamente un attributo "pfield{i}" che è una lista vuota
setattr(self, f"pfield{i}", [])
Calcolo Pfields dinamico.
def calcolaPfield(self):
# Ciclo attraverso gli attributi dinamici che iniziano con "pfield"
for i in range(3, len(self.lista_tuples[4:]) + 3): # Iniziamo da 3 per "pfield3"
pfield_attr = f"pfield{i}"
if hasattr(self, pfield_attr): # Verifica se l'attributo esiste
# Eseguiamo un ciclo sui valori da assegnare a ciascun pfield
cycled = cycle(getattr(self, self.lista_tuples[i - 3][0])) # Recuperiamo la lista da associare
for _ in range(len(self.pfield2)): # Usa la lunghezza di pfield2 per il ciclo
getattr(self, pfield_attr).append(next(cycled)) # Assegna i valori dinamicamente
Esempio di comportamento passato come dizionario.
{
"attacco": 0,
"durata": 20,
"durataArmonica" : 3,
"ritmo": [8,2,5,4,7,1],
"durate": "Line",
"ampiezze" : "Line",
"frequenze" : "Line"
},
E questa è la versione del reporitory allo stato di lavoro del diario.