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)
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,因此它可以保留自己的商品记录.