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 :

Listes et méthodes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Listes et méthodes
    Bonsoir,

    Le sujet du post n'est pas très clair, je ne savais pas vraiment quoi mettre. Ma question est plutôt simple, mais je n'ai pas trouvé la réponse, sachant que je ne sais pas vraiment quels mots clés utiliser pour la trouver !

    J'ai une classe inventaire qui a comme attribut une liste que je rempli comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    list.append((Objet,Nb))
    Objet étant un objet de ma classe Objet et Nb un int. C'est la solution qui m'a paru la plus simple, peut-être y a t-il encore plus simple, mais je ne vois pas.
    Mon problème vient du fait que je ne sais plus utiliser les méthodes classique des listes que j'utilise normalement. Par exemple, je veux créer une méthode Add qui va ajouter des objets à mon inventaire. Or comment utiliser la méthode index(Objet) de la classe liste dans ce cas ? Par exemple si je veux ajouter un objet à mon inventaire, si il y en a déjà un exemplaire, je veux simplement augmenter la valeur de Nb.

    Ne sachant pas faire, pour le moment je me contente de ça, et je trouve ca plutot moche :

    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
    class Inventaire:
    	def __init__(self):
    		self.tab = []
    		self.tab_nb = []
     
    	def Ajouter(self,item,nb):
    		if item in self.tab:
    			i = self.tab.index(item)
    			self.tab_nb[i] = self.tab_nb[i] + nb
    		else:
    			self.tab.append(item)
    			self.tab_nb.append(nb)
     
    	def Supprimer(self,item,nb):
    		if item in self.tab:
    			i = self.tab.index(item)
    			self.tab_nb[i] = self.tab_nb[i] - nb
                            #ici j'appelle une méthode qui supprime les objets ayant nb à 0.
    J'en appelle donc aux gens plus expérimentés que moi ! Merci,
    Siriru
    Dernière modification par Invité ; 16/12/2009 à 20h59.

  2. #2
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    c'est extremement simple... une fois qu'on connais l'astuce !

    Il te suffi d'utiliser un dico !
    ex:
    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
    >>> class Inventory(object):
    	def __init__(s):
    		s.dico={}
    	def add(s,key):
    		if key not in s.dico:
    			s.dico[key]=1
    		else:
    			s.dico[key]+=1
     
     
    >>> inv=Inventory()
    >>> a=Object()
    >>> b=Object()
    >>> for x in range(3):
    	inv.add(a)
     
    >>> for x in range(2):
    	inv.add(b)
     
    >>> inv.dico
    {<__main__.Object object at 0x011ACF90>: 3, <__main__.Object object at 0x011B7550>: 2}

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ha interessant, je teste ca tout de suite.

    Ha mais c'est génial ! J'adore de plus en plus python ! Merci beaucoup !

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

Discussions similaires

  1. Créer une liste et méthode contains
    Par cyraile dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/06/2007, 15h27
  2. [VS.net2003][IDE] Exporter la liste des méthodes
    Par arnolem dans le forum Visual Studio
    Réponses: 2
    Dernier message: 01/06/2006, 16h53
  3. Suspendre l'exécution d'une liste de méthodes.
    Par Sylvester dans le forum Langage
    Réponses: 4
    Dernier message: 03/05/2006, 11h36
  4. Réponses: 3
    Dernier message: 03/05/2005, 18h16
  5. Editeur de texte - liste des méthodes
    Par Carlito_superheros dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 30/03/2005, 12h52

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