我正在尝试用Python完成OOP的实验。
赋值包括创建“ShoppingCart”和“Shop”类,其中“Shop”继承自“ShoppingCart”。在
Shopping Cart类中有一个构造函数,它不带参数,将“total”属性设置为零,并初始化名为“items”的空dict属性。
此外,还将创建以下方法“add_item”、“remove_item”(都需要类似的参数:item_name、quantity、price);add_item方法应将添加项的成本添加到total的当前值中,并在“items”dict中添加一个条目,以便键为“item”且值为“quantity”而“remove_item”方法则相反;而“checkout”方法接受“cash”并返回付款余额
“Shop”类有一个不带参数的构造函数,它将属性“quantity”初始化为100。
它还需要重写“remove_item”方法,以便调用不带参数的Shop的“remove_item”将数量减少1。在
我一直得到一个与'Shop'类中的super方法相关的堆栈跟踪错误。在
以下是我目前为止的代码:
class ShoppingCart:
def __init__(self):
self.total = 0
self.items = {}
def add_item(self, item_name, quantity, price):
self.price = price
self.item_name = item_name
self.quantity = quantity
if self.item_name in items:
items[item_name] += quantity
else:
items[item_name] = quantity
self.total += price*quantity
def remove_item(self,item_name, quantity, price):
self.price = price
self.quantity = quantity
self.item_name = item_name
if self.item_name in items:
self.total -= price*quantity
del items[item_name]
def checkout(self, cash_paid):
self.cash_paid = cash_paid
if cash_paid < self.total:
return "Cash paid not enough"
else:
return cash_paid - self.total
class Shop(ShoppingCart):
def __init__(self):
super().__init__(quantity)
self.__quantity = 100
def __remove_item (self):
self.__quantity -= 1
另外,我的add_item和remove_item方法似乎会引发错误,但我不知道我做错了什么。在
这些是实验室的单元测试,非常具有挑战性:
^{2}$
也许是因为。。。在
并且您尝试将quantity作为参数传递给一个无参数构造函数
此外,
quantity
是一个未定义的变量此外,为什么购物车会有一个单一的项目名称?或者仅是最后添加或删除的项目的大小/价格?在
^{pr2}$我想你想要一个
Item
类,你的购物车里有一个列表,而不是一个字典原因是:你有一本只能存放单键键的字典。只要删除一个
items[item_name]
,不管“数量”是多少,都将清空具有该名称的所有项目。在相关问题 更多 >
编程相关推荐