Python est livré avec la fonction pratique dir()
qui répertorie le contenu d'une classe pour vous. Par exemple, pour cette classe:Comment parcourir sur les attributs d'une classe, dans l'ordre où ils ont été définis?
class C:
i = 1
a = 'b'
dir(C)
reviendriez
['__doc__', '__module__', 'a', 'i']
Cela tombe bien, mais remarquez comment l'ordre de 'a'
et 'i'
est maintenant différente, alors l'ordre dans lequel ils ont été définis dans
Comment est-ce que je peux itérer sur les attributs de C (en ignorant potentiellement les attributs de module doc & intégrés) dans l'ordre dans lequel ils ont été définis? Pour la classe C ci-dessus, le serait 'i'
puis 'a'
. - Je travaille sur un code de sérialisation/journalisation dans lequel je veux sérialiser les attributs dans l'ordre où ils ont été définis afin que la sortie soit similaire au code qui a créé la classe.
Pourquoi l'ordre dans lequel ils sont définis est-il important? L'ordre n'est pas pertinent dans ce cas. Comment utiliseriez-vous cette information si vous pouviez l'obtenir? –
Est-ce que vous sérialisez la classe ou les instances de la classe? Dans votre exemple, 'a' et' i' sont des attributs de classe. Si vous voulez dire que ce sont des attributs d'instance, vous devez les définir dans '__init__' en utilisant' self.a = 'b'' et 'self.i = 1'. – PaulMcG
Ce sont des attributs de niveau classe, qui ne sont pas aussi utiles que les variables d'instance. Pourquoi essayez-vous de préserver l'ordre des attributs de classe? Ne vaudrait-il pas mieux préserver l'ordre des variables d'instance?Pourquoi essayez-vous de faire des trucs avec des variables de niveau classe? –