类python中的全局字典

Tyl*_*our 2 python global class

我正在用Python设计一个库存类,它应该跟踪商店库存商品,添加新商品和删除它们.

问题来自我在课堂上的"项目"定义.当我将另一个项目添加到我的字典中时,它会替换它,它不会添加它.我感谢您的帮助!为什么不加?

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
Run Code Online (Sandbox Code Playgroud)

Bre*_*arn 5

items每次打电话时,您都要设置一个新的空字典additem.因此,在添加新项目之前,它总是会删除任何内容.相反,items = {}在函数外部设置一次.这样做也没有意义self.item = str(item)(价格相同),因为这只会覆盖现有的self.item,所以你只能访问最新的.

实际上,你可能应该做的是创建items对象的属性,如下所示:

class Store:

    def __init__(self, name, email):
        self.name = name
        self.email = email
        self.items = {}

    # rest of your code here. . .

    def additem(self, item, price):
        self.items[str(item)] = float(price)

    def delitem(self, item):
        del self.items[str(item)]

    def displayinventory(self):
        return self.items
Run Code Online (Sandbox Code Playgroud)

你这样做的方式,只有一个全局items字典将在所有商店之间共享.上面的方法为每个商店提供了自己的商品dict,因此它可以保留自己的商品记录.