IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Automatisation de la création de classes [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur Etude et Développement
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etude et Développement
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Par défaut Automatisation de la création de classes
    Bonjour,

    Je travaille sous Django, où je définie des vues. Ces vues sont basées sur des classes, sollicitées lors d'appels GET sur URLs API.
    Tout fonctionne bien, si ce n'est que plusieurs centaines de classes sont quasiment identiques : seuls deux libellés (noms de classes) varient à chaque fois (ci-dessous en gras) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class NomClasse1(ReadOnlyModelViewSet):
        serializer_class = NomClasseSerializer
        def get_queryset(self):
            return NomClasseModel.objects.all()
    Afin de faciliter la lecture du fichier, et d'optimiser les charges de maintenances, je cherche un moyen d'industrialiser la déclaration de ces classes.
    L'idée serait de pouvoir boucler sur une liste d'instances de classes, contenant les deux libellés à exploiter.

    Quelqu'un a déjà traité ce type de scénario ?

    Merci par avance,
    Xorguy.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Python étant interprété, les "class" peuvent être créées dynamiquement.
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def f():
         class A:
              pass
         return A
    retournera une nouvelle classe de A à chaque appel.

    Vous pouvez aussi utiliser type.
    note: une "class" fabriquée dans un module aura la durée de vie du module (sauf destruction explicite). Pour une class dynamique, il va falloir garder une référence dessus.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Je pense que cet exemple devrait t'intéresser...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/usr/bin/env python3
    # coding: utf-8
     
    class c1:
    	def __init__(self, n): self.n=n
    	def carre(self): return self.n**2
     
    a=c1(60)
    print(a.carre())
     
    def init(self, arg): self.n=arg
    def carre(self): return self.n**2
    c2=type("c2", (object,), {"__init__" : init, "carre" : carre})
    b=c2(60)
    print(b.carre())

    Après il faut aller lire ce chapitre qui suit celui mentionné par wiztricks et qui explique comment customiser une classe.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur Etude et Développement
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etude et Développement
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Par défaut
    Ces approches ouvrent des perspectives très intéressantes !
    Merci à tous les deux .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/12/2010, 12h18
  2. [RMI] problème Création *_stub.class et *_skel.class
    Par philobedo dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 29/05/2006, 20h03
  3. Création de classe exception
    Par HNT dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 03/01/2006, 15h53
  4. Création de classes à la volée...
    Par ouiffi dans le forum Langage
    Réponses: 8
    Dernier message: 16/12/2005, 18h01
  5. []Automatisation de la création de compte dans l'AD de windows
    Par khalan dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 16/12/2005, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo