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 :

Ajout dynamique d'objet


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut Ajout dynamique d'objet
    Bonjour bonjour,

    En faite pour faire simple je reçois une matrice de ma db...
    J'aimerai créer une liste d'objet a partir de ma matrice...
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def Avoir_List_Dispo(self, entite):#Liste les fonctions disponibles pour l'entite passer en parametre
            conn = pyodbc.connect(self.sql_chaine_connexion)
            cursor = conn.cursor()
            Sql_cmd = "select * from fonction where id_fonc not in (select a.id_fonc from avoir AS a INNER JOIN fonction AS f ON a.id_fonc = f.id_fonc where a.id_entite = %d)" %(int(entite.id))
            aray = cursor.execute(str(Sql_cmd))
            fonctions = []
            for row in aray:#Je creer une liste de liste qui contient ID et nom de fonction
                fonction = Vtek_Fonction()
    			fonction.id = row.id_fonc
    			fonction.nom = row.fonc_nom
                fonctions.append(fonction)
            conn.close()
            return fonctions
    Seulement avec ce code, tous les objet dans ma liste pointe vers le même objet en mémoire...
    Comment pourrais-je faire pour en ajouter un nouveau a chaque tour de boucle?

  2. #2
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for row in aray:#Je creer une liste de liste qui contient ID et nom de fonction
        fonction = Vtek_Fonction() 
        fonction.id = row.id_fonc
        fonction.nom = row.fonc_nom
        fonctions.append(fonction)
    Si tout les objets de la liste sont des références vers le même objet c'est parce que
    Vtek_Fonction() dois être une fonction qui retourne une référence sur un même objet.
    Peux-tu poster la fonction Vtek_Fonction stp ?

    Pourquoi ne pas faire une classe Vtek_Fonction ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Vtek_Fonction( object ) :
        def __init__( self, id, nom ) :
            self.id_fonc = id
            self.fonc_nom = nom
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    Vtek_Fonction n'est pas une fonction... C'est une classe...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Vtek_fonction(object):
        def __init__(self):
            self.id = 0
            self.nom = ''

  4. #4
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    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
     
    class Vtek_Fonction(object):
        def __init__(self):
            self.id = 0
            self.nom = ''
     
    class A() :
        def Avoir_List_Dispo( self, entite):#Liste les fonctions disponibles pour l'entite passer en parametre
            array = [ { "id_fonc" : 12, "fonc_nom" : 'foo'}, { "id_fonc" : 4, "fonc_nom" : 'bar'}, { "id_fonc" : 10, "fonc_nom" : 'toto'} ]
            fonctions = []
            for row in array:#Je creer une liste de liste qui contient ID et nom de fonction
                fonction = Vtek_Fonction()
                fonction.id = row['id_fonc']
                fonction.nom = row['fonc_nom']
                fonctions.append( fonction )   
            return fonctions
     
    a = A()
    for obj in a.Avoir_List_Dispo( None ) :
        print id( obj )
    Pour moi, les objets sont différents, le code si dessus m'affiche :

    140288218305616
    140288218305936
    140288218306000

    Es-tu sûr que les objets de la liste retournée par Avoir_List_Dispo sont les mêmes ?

    Si oui essaye de reproduire le phénomène sur un code court et fonctionnel.
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    En faite

    Tout fonctionnait bien :p
    J'avai remplacer cette partie en attendant et maintenant en essayant tout fonctionne :p

  6. #6
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Pas de problème.
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

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

Discussions similaires

  1. remove d'objets ajoutés dynamiquement
    Par guillaumec59 dans le forum jQuery
    Réponses: 2
    Dernier message: 25/11/2010, 12h32
  2. [VBA] Ajouter dynamiquement une référence
    Par jpharand dans le forum VBA Access
    Réponses: 23
    Dernier message: 16/04/2010, 23h28
  3. création dynamique d'objet, projet win32
    Par noinneh dans le forum MFC
    Réponses: 5
    Dernier message: 03/02/2005, 16h07
  4. [Reflexivite]création dynamique d'objet et Héritage
    Par norkius dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 26/10/2004, 11h37
  5. Ajout dynamique d'un contrôle à une fenêtre
    Par Yacine95000 dans le forum MFC
    Réponses: 6
    Dernier message: 08/06/2004, 16h03

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