基本上,我正在制作一个应用程序,以更好地帮助我管理我的易趣商店。我对编程和面向对象编程还是很陌生的。看完一些教程后,我拼凑了以下代码。到目前为止一切都很顺利。我目前一直坚持的是,当用户输入一个项目的库存,它不是保存它。而且,当用户想要查看库存时,他们添加的项目不会填充。任何意见或建议都要经过严格的训练
def Inventory():
All_Inventory = {}
class Ebay_Inventory:
def __init__(self, manufacturer, object_type, price):
self.manufacturer = manufacturer
self.object_type = object_type
self.price = price
def add_item(self):
manufacturer = input("Enter Manufacturer: ")
object_type = input("Enter what the item is: ")
price = input("Enter price: ")
item_info = Ebay_Inventory(manufacturer, object_type, price)
All_Inventory = item_info
print("Item added successfully")
def delete_item(self):
delete = input("What is the item you want to delete?: ")
if delete in All_Inventory.keys():
del[delete]
print("The item entered has been deleted.")
else:
print("Item not found")
def sale_status(self):
update = input("What is the item you want to update?:")
if update in All_Inventory.keys():
pass
else:
print("Item not found")
user=True
while user:
print("\n1. Add to item inventory")
print("2. Remove item from inventory")
print("3. Update sale status")
print("4. View inventory")
print("5. Exit program")
user_wants=input("What would you like to do today?")
if user_wants=="1":
Ebay_Inventory.add_item(input)
elif user_wants=="2":
Ebay_Inventory.delete_item(input)
elif user_wants=="3":
Ebay_Inventory.sale_status(input)
elif user_wants=="4":
print(All_Inventory)
elif user_wants=="5":
print("\n Thank you for using item inventory.")
break
elif user_wants!="":
print("\n Input not understood. Please try again.")
很抱歉对您的代码进行了大量的修改,但我认为这更像是您的目标:
你有一个变量
user
什么都没做。只需使用while True:
进入无限循环即可。如果你想像以前那样循环,那么你可以用user = False
来代替break
。这有时是一个漂亮的把戏,但在这里没有意义,我想。在我看来,库存实际上是存储在类中唯一有好处的东西,然后方法可以通过self.all_inventory
访问它来调整它。我将您的代码移到add_item()
和sale_status()
方法中请求项输入,因此现在主代码块看起来干净多了。我还将它包装在if __name__ == "__main__":
中,这样您就可以将这个类导入到另一个项目中,而不必运行整个程序!我用try:
和except:
子句进行了一些基本的错误检查。我想你误解了Class
和Instance
之间的区别。所以在我的代码中,Class
是EbayInventory,而Instance
是my_app
。你创建类的实例就像我对my_app = EbayInventory()
所做的那样,然后self现在引用我的应用程序。这样我就可以调用my_app.add_item()
。不过,您可以有多个对象实例,它们在您的计算机内存中都有自己的空间。所以你可以说:只有app1会有任何项,而app2仍然是一个空列表,但是仍然有
methods
来通过app2.add_item()
构建一个清单。不过,为了回答您的主要问题,您从不调用函数Inventory()
,因此它不存在来保存您的信息。当您调用item_info = Ebay_Inventory(manufacturer, object_type, price)
时,实际上您正在创建一个类的实例,在这里这样做是非常荒谬的,因为这意味着在下一行您可以说item_info.add_item()
,这将使成为另一个实例,但是您没有将此信息保存在任何地方,因此您永远无法检索它您需要阅读有关范围、OOP和dicts的内容:
您没有添加到
Inventory.All_Inventory
中-您使用All_Inventory = item_info
创建了一个新的本地将静态类属性和实例属性混合在一起,如下所示:
您正在错误地删除/访问词典-请参阅:
固定:
输出:
相关问题 更多 >
编程相关推荐