Partage
  • Partager sur Facebook
  • Partager sur Twitter

Listes d'instance de classe

Récupération d'attributs d'instance de classe stockée dans une liste

    16 juin 2021 à 19:24:11

    Bonjour à tous, désolé de vous déranger...

    Voilà le topo : j'écris un programme où j'utiliser une classe où je stockes par exemple des coordonnées. Tout ce que j'avais fait jusqu'à lors s'était bien passé, mais maintenant j'ai un problème. En fait, j'ai stocké des instances de la classe dans une liste python normale, et en essayant de récupérer certain attribut depuis la liste, l'interpréteur considère que l'attribut en question n'existe pas...

    class individu:
        "Définition de la classe individu"
    
    def nouv_individu(infecte = False, coordonnées = dim_plan, age = 0):
        ind = individu()
        ind.x = randint(0, coordonnées)
        ind.y = randint(0, coordonnées)
        ind.inf = infecte
        ind.age = age
        ind.gueri = False
        ind.viv = True
        ind.choix = ''
        ind.vitesse = 0
        return ind
    
    def nouv_population(nombre, nombre_infectes):
        pop = []
        for i in range(nombre_infectes):
            pop.append(nouv_individu(infecte = 'oui'))
        for i in range(nombre - nombre_infectes):
            pop.append(nouv_individu)
        return pop
    
    pop1 = nouv_population(1000, 20)
    
    print(pop1[0].x)
    
    
    x = []
    for i in range(len(pop1)):
        ind = pop1[i]
        x.append(ind.x)
        print(x)
    
    print(x[0])
    

    Le plus étrange c'est que le dernier bout de code affiche bien les différentes valeur de la liste, mais j'ai quand même une erreur me disant qu'un objet de type 'function' n'a pas d'attribut 'x'...

    -
    Edité par NathanDiMartino 16 juin 2021 à 19:30:35

    • Partager sur Facebook
    • Partager sur Twitter
      16 juin 2021 à 19:32:14

      déjà c'est quoi dim_plan? Il y a pas tous ton code, et quand je veux afficher pop1 , ca m'affiche ceci:

      <__main__.individu object at 0x7fa70bbf2a20>, <__main__.individu object at 0x7fa70bbf2a58>
      1000 mille fois !!!

      -
      Edité par Le programmeur solitaire 16 juin 2021 à 19:38:05

      • Partager sur Facebook
      • Partager sur Twitter

      le code FAIT le bonheur (pour moi en tous cas)

        16 juin 2021 à 20:06:49

        Je t'envoie tout

        from random import *
        
        dim_plan = 100
        
        class individu:
            "Définition de la classe individu"
        
        def nouv_individu(infecte = False, coordonnées = dim_plan, age = 0):
            ind = individu()
            ind.x = randint(0, coordonnées)
            ind.y = randint(0, coordonnées)
            ind.inf = infecte
            ind.age = age
            ind.gueri = False
            ind.viv = True
            ind.choix = ''
            ind.vitesse = 0
            return ind
        
        def nouv_population(nombre, nombre_infectes):
            pop = []
            for i in range(nombre_infectes):
                pop.append(nouv_individu(infecte = 'oui'))
            for i in range(nombre - nombre_infectes):
                pop.append(nouv_individu)
            return pop
        
        x = []
        for i in range(len(pop1)):
            ind = pop1[i]
            x.append(ind.x)
            print(x)
         
        print(x[0])
        



        • Partager sur Facebook
        • Partager sur Twitter
          16 juin 2021 à 21:23:40

          Bonjour. Ligne 25 tu ajoute nouv_individu dans la liste, qui est une fonction. Tu as oublié ().

          Par ailleurs, tu faisais du javascript avant non ? Je crois que tu devrais revoir le cours sur la POO.

          • Partager sur Facebook
          • Partager sur Twitter
            17 juin 2021 à 19:17:49

            pop1 n'est pas défini dans le code fourni (sauf si je suis mirot et que j'ai zappé l'appel à nouv_population() quelque part)

            Edit: ah il était dans le 1er code, mais n'apparait plus dans le 2nd code (qui était censé être tout le code); pas facile de bien suivre du coup ....

            donc oui l'erreur est ligne 21 du 1er code (ou 25 du second) pop.append(nouv_individu())

            -
            Edité par umfred 17 juin 2021 à 19:20:42

            • Partager sur Facebook
            • Partager sur Twitter

            Listes d'instance de classe

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown