Python viene fornito con la pratica funzione dir()
che dovrebbe elencare il contenuto di una classe per te. Ad esempio, per questa classe:Come eseguire iterazioni sugli attributi di una classe, nell'ordine in cui sono stati definiti?
class C:
i = 1
a = 'b'
dir(C)
sarebbe tornare
['__doc__', '__module__', 'a', 'i']
Questo è grande, a meno di notare come l'ordine di 'a'
e 'i'
ora è diverso quindi nell'ordine in cui sono stati definiti in
In che modo è possibile scorrere gli attributi di C (potenzialmente ignorando gli attributi del modulo integrato & nell'ordine in cui sono stati definiti? Per la classe C sopra, il valore sarebbe 'i'
quindi 'a'
.
Addendum: - Sto lavorando su qualche serializzazione/codice di registrazione in cui voglio serializzare gli attributi nell'ordine in cui sono stati definiti in modo che l'output sia simile al codice che ha creato la classe.
Perché l'ordine in cui sono definiti è importante? L'ordine è irrilevante in questo caso. Come useresti queste informazioni se potessi averlo? –
Stai serializzando la classe o le istanze della classe? Nel tuo esempio, 'a' e' i' sono attributi di classe. Se vuoi dire che questi sono attributi di istanza, dovresti definirli in '__init__' usando' self.a = 'b'' e 'self.i = 1'. – PaulMcG
Questi sono attributi di livello di classe, che non sono così utili come le variabili di istanza. Perché stai cercando di mantenere l'ordine degli attributi di classe? Non sarebbe meglio preservare l'ordine delle variabili di istanza?Perché stai provando a fare trucchi con le variabili a livello di classe? –