我试图在Python 3.6上创建商店程序而我的代码不能正常工作。我做了很多修改,现在我遇到了更多的内部编码问题,例如制作菜单在一个循环中运行,直到客户退出程序并在列表中创建包含相应项目的所有信息的列表。代码可能不会在此处正确缩进,但这更像是复制和粘贴错误。
以下是代码:
class RetailItem:
def __init__(self):
self.price = price
self.units = units
self.description = description
class CashRegister:
def __init__(RetailItem, self):
self.totalprice=0
self.cart=[]
self.items=[]
duck = RetailItem
duck.description = "Large plush duck"
duck.units = 3
duck.price = 6.99
porcupine = RetailItem
porcupine.description = "Pink plush porcupine"
porcupine.units = 5
porcupine.price = 9.99
bunny = RetailItem
bunny.description = "small white plush bunny"
bunny.units = 7
bunny.price = 4.99
self.items=[duck,bunny,porcupine]
print("Welcome to The Toy Store.\n Selection:\n 1.Duck \n 2.Bunny \n 3.Porcupine")
def menu(self):
item = int(input("What would you like to select? "))
item=+1
item = self.items[item]
return item
def purchase(RetailItem):
self.items = self.items.append(item)
self.totalprice = totalprice.append(item.price)
item.units=item.units-1
self.cart= self.items.append(item)
print("You have added"+(item)+"to your cart")
def get_total(self):
return("Your total is", self.totalprice)
def show_item(RetailItem):
return(description(RetailItem), units(RetailItem), price(RetailItem))
def clear_register(self):
self.totalprice = []
self.items = []
def main():
C1=CashRegister(CashRegister)
C1.menu()
choice=int(input(("Options: \n 1.Add to Cart 2. View item \n 3.Return to Main Menu ")))
if choice==1:
purchase(item)
if choice==2:
show_item(item)
choice=int(input(("Would you like to purchase this item? \n 1. Yes \n 2. No"))
if choice==3:
C1.menu()
choice=int(input(("Options: \n 1. Add more items to your cart. 2.View cart 3. Quit"))
if choice!= 3:
if choice==1:
menu()
答案 0 :(得分:1)
似乎def menu(self)
不在任何类中,因此它不应该有self
参数。删除它,它应该工作。或者将menu
放入一个班级。
self
参数是为类方法保留的。更多信息here
编辑:实际上,如果我理解您的代码,那么您的menu(self)
属于CashRegister
类。如果是这样,只需缩进整个menu(self)
块。
class CashRegister:
def __int__(self,RetailItem):
self.total= ()
Duck = RetailItem()
Duck.description = "Large plush duck"
Duck.units = 3
Duck.price = 6.99
Porcupine = RetailItem()
Porcupine.description = "Pink plush porcupine"
Porcupine.units = 5
Porcupine.price = 9.99
Bunny = RetailItem()
Bunny.description = "small white plush bunny"
Bunny.unitsininv = 7
Bunny.price = 4.99
def menu(self):
print("Welcome to The Toy Store.\n Selection:\n 1.Bunny \n 2.Porcupine \n 3.Duck")
choice = int(input("What would you like to buy? "))
if choice==1:
item = Bunny
elif choice == 2:
item = Porcupine
elif choice==3:
item = Duck
else:
print("Error")
答案 1 :(得分:1)
如何处理 menu not defined
:
关键字self
用于类中的方法。 menu
是一个
顶级方法。
只需缩进menu
即可成为课程CashRegister
的方法。
您的计划还存在其他问题。
您忘记缩进Porcupine和Bunny对象,因此它将位于__init__
的{{1}}
使用CashRegister
输入内容不起作用。
您的choice
未正确发起。您需要将其初始化为对象:CashRegister C1
)而不是C1 = CashRegister(*some RetailObject*
C1 = CashRegister
:Bunny.unitsininv
并不作为unitsininv
字段存在。
RetailItem
total
应为列表。
CashRegister
,purchase
,get_total
,show_items
也应该是clear_register
CashRegister
的方法。
初始化错误:您输入了self
以下是更新后的代码,您可以花时间阅读以了解设置CashRegister所需的内容,并且可以使用Python Shell向CashRegister进行购买。
__int__