Ho un'API REST che voglio modellare in una classe in modo da poter accedere alle proprietà usando la notazione a punti (notazione elenco JS). Ho definito esplicitamente le proprietà sulla mia classe utilizzando i tag @property
rispetto alle proprietà note del JSON restituito, ma poiché sto modellando un'API di terza parte, ho bisogno di un modo per aggiungere anche dinamicamente le proprietà se non sono presenti nella classe . Non voglio ereditare dal dizionario perché non funziona bene con le proprietà definite. Sembrano tornare come None
il più delle volte. Inoltre, non voglio che gli utenti abbiano due modi per ottenere le informazioni (cercando di seguire lo zen di python). La notazione dei punti va bene, non è necessario essere in grado di accedere ai dati tramite i nomi KEY.
L'utilizzo di setattr
potrebbe essere una possibile posizione in fase di esecuzione, ma penso di aver bisogno di un passaggio aggiuntivo perché il compilatore genera un errore non implementato se una proprietà non esiste sulla classe. Devo implementare __setattr__
e __setattribute__
sull'oggetto per evitare questo errore e restituire solo None
se la proprietà non esiste.
Devo solo supportare la sola lettura.
Grazie