创建一个名为ShoppingCart的类。python ShoppingCart中的面向对象编程
创建一个不带参数并将total属性设置为零的构造函数,并初始化一个名为items的空dict属性。
创建一个方法add_item,它需要item_name,数量和价格参数。 此方法应该将添加项目的成本添加到当前总值中。 它还应该添加一个条目词典,使关键是item_name 和值是该项目的数量。
创建一个方法remove_item,它需要与add_item类似的参数。它应该删除已添加到购物车并且不需要的商品。此方法应从当前总计中扣除已移除项目的成本,并相应地更新项目字典。
如果要移除的物品的数量超过购物车中该物品的当前数量,则假定该物品的所有条目都将被移除。
创建一个方法checkout,它接受cash_paid并从付款中返回余额值。 如果cash_paid不足以支付总额,则返回“支付的现金不足”。
创建具有构造函数不带任何参数,并初始化名为量的属性在100
确保店铺从我的购物继承的类名为店。
在店铺等级,由一个覆盖remove_item方法,例如,调用店的不带参数的remove_item递减量“””
这是我更新的代码。
class ShoppingCart(object):
def __init__(self):
self.total = 0
self.items = {}
def add_item(self, item_name, quantity, price):
self.total = (quantity * price)
self.items = {item_name : quantity}
def remove_item(self, item_name, quantity, price):
self.total -= (quantity * price)
if quantity > self.items[item_name]:
del self.items
self.items[item_name] -= quantity
def checkout(self, cash_paid):
balance = 0
if cash_paid < self.total:
return "Cash paid not enough"
balance = cash_paid - self.total
return balance
class Shop(ShoppingCart):
def __init__(self):
ShoppingCart.__init__(self)
self.quantity = 100
def remove_item(self):
self.quantity -=1
import unittest
class ShoppingCartTestCases(unittest.TestCase):
def setUp(self):
self.cart = ShoppingCart()
self.shop = Shop()
def test_cart_property_initialization(self):
self.assertEqual(self.cart.total, 0, msg='Initial value of total not correct')
self.assertIsInstance(self.cart.items, dict, msg='Items is not a dictionary')
def test_add_item(self):
self.cart.add_item('Mango', 3, 10)
self.assertEqual(self.cart.total, 30, msg='Cart total not correct after adding items')
self.assertEqual(self.cart.items['Mango'], 3, msg='Quantity of items not correct after adding item')
def test_remove_item(self):
self.cart.add_item('Mango', 3, 10)
self.cart.remove_item('Mango', 2, 10)
self.assertEqual(self.cart.total, 10, msg='Cart total not correct after removing item')
self.assertEqual(self.cart.items['Mango'], 1, msg='Quantity of items not correct after removing item')
def test_checkout_returns_correct_balance(self):
self.cart.add_item('Mango', 3, 10)
self.cart.add_item('Orange', 16, 10)
self.assertEqual(self.cart.checkout(265), 75, msg='Balance of checkout not correct')
self.assertEqual(self.cart.checkout(25), 'Cash paid not enough', msg='Balance of checkout not correct')
def test_shop_is_instance_of_shopping_cart(self):
self.assertTrue(isinstance(self.shop, ShoppingCart), msg='Shop is not a subclass of ShoppingCart')
def test_shop_remove_item_method(self):
for i in range(15):
self.shop.remove_item()
self.assertEqual(self.shop.quantity, 85)
运行unittest后,test.checkout_returns_correct_balance失败。 这是我得到的消息: self.assertEqual(self.cart.checkout(265), 75, msg='Balance of checkout not correct') AssertionError: 105 != 75 : Balance of checkout not correct
我真的需要一些帮助。
哪些测试?预期产出是多少?观察到的输出是什么?你不能只抛弃作业描述和一堆代码,并期望我们从头开始。 – ShadowRanger
@ShadowRanger'add_item'方法和'remove_item'方法,我没有实现正确的代码..你可以通过它,代码是非常凌乱 – Manny
不幸的是,“代码是相当混乱”是一个很好的我们的理由*不*通过您的代码。我们没有付出代价来调试你的代码,而且乱糟糟的代码没有什么好玩的。也许你应该清理它,看看问题是否对你更清楚?如果没有,也许你会把问题缩小到可以变成[mcve]的地步。 – Blckknght