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 :

génération aléatoire de noms d'objets


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut génération aléatoire de noms d'objets
    bonjour,
    dans un programme que je développe, sans entrer trop dans les détails, je lance une boucle qui, à chaque étape, crée un objet d'une classe que j'ai créée.
    le problème, c'est que je ne sais pas à l'avance la longueur de la boucle, et de manière générale, elle sera plutôt longue; ma question est donc la suivante : peut-on générer aléatoirement des noms d'objets ?
    l'idée serait la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i in range(len(truc)-1):
         retournerNomAleatoireDObjet=MaClasse(eventuels parametres)
    # ou pourquoi pas faire intervenir i dans le nom de mon objet, d'une manière ou d'une autre, que je ne connais pas :)
    for i in range(len(truc)-1):
         nomDObjetNumero_i=MaClasse...
    merci d'avance!

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Une solution: utilise des listes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    listobj = []
    for i in range(len(truc)-1):
         listobj.append(MaClasse(eventuels parametres))

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    Sans donner de noms aux instances? C'est étonnant! Je vais essayer, je vous redirez si ça fonctionne.
    merci!

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    J'ai fait ce code, un peu au petit bonheur la chance...

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    sequ = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    sequ.extend(['0','1','2','3','4','5','6','7','8','9'])
    sequ.extend(['!','@','#','$','%','^','&','*','(',')','_','+','-','=',':',';',','])
     
    from random import choice
     
    class Message:
        def __init__(self, aString):
            self.text = aString
        def printIt(self):
            print self.text
     
    d = {}
    noms = []
    titres = ["Les Chimpanzés de l'Espace","Quantum of Solace ","Mia et le Migou",\
               "Le Chant des Mariées ","Mensonges d'Etat "]
     
    for tit in titres:
        ref = ''
        for i in range(12):
            ref = ref + choice(sequ)
        noms.append(ref)
        d[ref] = Message(tit)
     
     
    for j in noms:
        print 'd['+j+']  est  ',d[j]
        print 'Son message est : ',d[j].printIt()

    On peut considérer que les éléments de la liste "noms" sont des noms aléatoires d'objets de la classe Message, bien que pour atteindre l'un de ces objet il faille en réalite manipuler d[nom]


    En fait je trouve la question bizarre car si on crée une variable avec un nom aléatoire, qu'est ce qu'on en fait après ?
    Si c'est pour qu'elle soit traitée automatiquement par le programme, peu importe que le nom soit aléatoire me semble-t-il, et donc pourquoi ne pas dans ce cas nommer les objets par des noms à indices 1,2,3,4 etc ?
    Et s'il y a des appels aux objets qui doivent être réalisés au cours de l'exécution par l'utilisateur, comment fait-il pour savoir quel nom utiliser pour désigner tel ou tel objet ?
    Je ne suis pas très clair, mais c'est que le problème initial me parait être particulier à la base.
    Je suis curieux de comprendre un peu plus le problème.
    On ne peut pas savoir quelle sorte d'objets doivent être nommés par des noms aléatoires et à quoi ils servent, stp ?

  5. #5
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut
    Après si on veut vraiment avoir un nom on peur faire comme ceci.
    On dirait que le problème initial était lié au fait que guiguizekid ne savait pas que l'on pouvait utiliser une liste ou dico pour stocker des objets.

    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
     
    #!/usr/bin/env python
    #coding=utf-8
    class C:
        def __init__(self,attributNom):
            self.__dict__["nom"] = attributNom
     
    dicObjet={}
    for i in range(10):
        nom="nom"+str(i)
        dicObjet[nom]=C(nom)
     
    print dicObjet
    print dicObjet["nom3"]
    print dicObjet["nom3"].nom

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    je voulais absoulment mettre un nom car je pensais que c'était nécessaire. Je ne pouvais pas choisir les indices car on ne peut faire intervenir l'iterateur d'une boucle dans un nom d'objet créé par le programme dans la dite boucle.
    Mais l'idée de Guigui_ fonctionne à merveille, comme d'hab'.
    cela dit, je n'ai pas tenté avec append, car je trouvais ca trop bizare, j'ai donc fait directement, l[i]=MaClasse...
    Ma question était finalement assez bête!
    Merci à tous!

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

Discussions similaires

  1. Génération aléatoire de noms
    Par ram-0000 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/11/2014, 13h22
  2. Génération aléatoire de noms
    Par Aemeth dans le forum Probabilités
    Réponses: 9
    Dernier message: 24/08/2007, 18h36

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