Ho riscontrato questo problema scrivendo una piccola lib di GUI che associa le classi alle semplici viste di tabella. Ogni membro della classe di un certo tipo = colonna e l'ordine delle colonne è importante. Ma ...Iterate attraverso i membri della classe in ordine della loro dichiarazione
class Person(object):
name = None
date_of_birth = None
nationality = None
gender = None
address = None
comment = None
for member in Person.__dict__.iteritems():
if not member[1]:
print member[0]
uscita:
comment
date_of_birth
name
address
gender
nationality
...
uscita ugh, l'oder ottenuto tutto confuso ... desiderata:
name
date_of_birth
nationality
gender
address
comment
C'è un modo per farlo senza mantenere OrderedDict()
aggiuntivo di colonne?
Un dtt è per definizione non ordinato, quindi non è possibile fare affidamento su alcun ordinamento di attributi di classe e sarà necessario mantenere l'ordine altrove. –
Solo un pensiero, un po 'sgradevole, ma sarebbe possibile scambiare "__dict__" per un ditt ordinato? Potrebbe essere ancora meglio mantenere l'ordine altrove, ma potrebbe essere bello vedere – GP89
@MartijnPieters non è vero, puoi farlo tramite un metaclasse. Infatti, il caso d'uso è esplicitamente menzionato sia in Python 3.x metaclass PEP (3115) che in OrderedDict PEP (372). –