gpt4 book ai didi

python - 类python中的全局字典

转载 作者:行者123 更新时间:2023-11-28 22:01:13 24 4
gpt4 key购买 nike

我正在用 Python 设计一个库存类,它应该跟踪商店的库存商品、添加新商品以及删除它们。

问题来 self 在类里面的“项目”定义。当我将另一个项目添加到我的字典时,它会替换它,而不是添加它。我感谢您的帮助!为什么不添加???

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

最佳答案

每次调用 additem 时,您都将 items 设置为一个新的空字典。所以它总是在添加新项目之前删除那里的任何东西。相反,在函数外部设置一次 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

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

关于python - 类python中的全局字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13411668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com