bonjour, merci de ma lire et encors merci si vous me lisez jusqu'au bout

voila, ma question est d'ordre quasi-philosophique.

je doit générer un fichier texte avec des champ a largeur fixe :
ex :
60 23112010FF40000000 X00014484
soit comme règles :
élément 1: offset=1 taille=3 (60 )
élément 2: offset=4 taille=8 (23112010)
élément 3: offset=12 taille=2 (FF)

etc...

j'ai donc créé des classe pour chaque Champ avec les info d'offset et de taille.
j'ai aussi crée une classe Enregistrement qui doit contenir ces champ...

mon dilemme viens de comment enregistrer la structure de ma ligne dans mon objet Enregistrement.

j'aurais bien créer une variable de classe contenant la liste des champ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
structure = [
            ChampText(nom="JOURNAL" , taille=3 , offset=1 , obligatoire=True) ,
            ChampDate(nom="DATECOMPTABLE" , taille=8 , offset=4 , obligatoire=True) ,
            ChampValue(nom="TYPE PIECE" , taille=2 , offset=12 , obligatoire=True , valides=\
                       [
                            "FC",
                            "AC",
                            "RC",
                            "FF",
                            "AF",
                            "RF",
                            "OD",
                            "OC",
                            "OF"
                       ])
          ]
et ensuite copier cette structure a chaque instanciation d'un enregistrement, mais je ne vois pas comment faire pour qu'il n'y ai pas l'instanciation au moment de la création des la structure(comme c'est le cas actuellement) mais seulement a la création de l'instance Enregistrement.

j'ai déjà entrevue plusieurs solutions :
- déplacer le code de la structure dans __init__
- poser les arguments dans un dico au lieu de créer mon objet directement dans la structure
- cloner la structure de mon attribut de classe a chaque __init__

en gros, je pourrait le faire, mais quel est la solution la plus pythonic ?


edit:
j'ai temporairement opté pour une méthode de classe qui retourne une nouvelle liste de champ.