mondial dictionnaire sein d'une classe python
Je suis de la conception d'un inventaire de la classe en Python, il est censé garder une trace des articles d'un magasin a en stock, en ajouter de nouveaux, et de les supprimer, ainsi.
Le problème vient de mon "article" définitions au sein de la classe. Quand j'ajoute un autre élément de mon dictionnaire, qu'il remplace, il n'a pas l'ajouter. Je vous remercie de votre aide! Pourquoi ne pas ajouter???
class Store:
def __init__(self, name, email):
self.name = name
self.email = email
# two accessor methods
def getName(self):
return self.name
def getEmail(self):
return self.email
# makes print work correctly
def __str__(self):
return str(self.name)
# items
def additem(self, item, price):
global items
items = {}
self.item = str(item)
self.price = float(price)
items[self.item] = price
def delitem(self, item):
items.remove(item)
def displayinventory(self):
return items
Vous devez vous connecter pour publier un commentaire.
Vous définissez
items
à un nouveau dictionnaire vide chaque fois que vous appelezadditem
. Donc efface ce qu'il y avant d'ajouter un nouvel élément. Au lieu de cela, définiritems = {}
une fois en dehors de la fonction. Il n'y a aucun point en faisantself.item = str(item)
(et de même pour le prix), parce que ce sera juste remplacer l'existantself.item
, donc vous aurez seulement accès à la plus récente.En fait, ce que vous devriez faire est de faire
items
un attribut de l'objet, comme ceci:La façon dont vous le faites, il n'y a qu'une seule
items
dict qui sera partagé entre tous les Magasins. De la façon décrite ci-dessus donne à chaque stocke ses propres éléments dict de sorte qu'il peut garder son propre record de ses propres éléments.