python中的Shopping Cart和item类,存在从一个类访问对象并在另一个类中使用它们的问题

2024-06-01 02:08:27 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试在python3中创建一个程序,该程序将从一个类item创建的对象转移到另一个类shoppingCart。其思想是使用item类创建一个对象列表,同时仍然能够访问item类的属性,如价格和数量。在

class item:
    def __init__(self,n,p,q):
        self.name = n
        self.price = p
        self.quantity = q
    def show(self):
        z = (str(self.name))
        print(z)
        self1 =("$")+(str(self.price))
        print(self1)
    def getName(self):
        return self.name
    def getPrice(self):
        return ("$") + str(self.price)
    def getQuantity(self):
        return self.quantity

class shoppingCart:
    def __init__(self, items):
        self.items = []
    def show(self):
        print(self.items)
    def addItem(self,item):
        if item not in self.items:
            self.items.append(item)
        else:
            item.q += 1
    def deleteItem(self,item):
        if item in self.items:
            self.items.remove(item)
        else:
            return print("Not in Cart")
    def checkOut (self):
        total = 0
        for i in self.items:
            price = i[1]
            total += price
        return total
item1 = item("Chocolate",5 ,3)
item2 = item("Bacon",15,1)
item3 =  item("Eggs",2,5)
c = shoppingCart([])
c.addItem(item1)
c.addItem(item2)
c.addItem(item3)
c.show()
print ("You have 3 items in your cart for a total of" (c.checkOut()))
c.removeItem(item3)
print ("You have 2 items in your cart for a total of" (c.checkOut()))

上面的代码当前创建了两个错误,首先,c.show正在打印附加到购物车的对象的id。另外,checkOut方法会产生一个关于price = i[1]的错误,说明item对象不支持索引。这个问题的替代解决方案仍然与我的原始代码有一些相似之处,这将是受欢迎的!在


Tags: 对象nameinselfreturndefshowitems
1条回答
网友
1楼 · 发布于 2024-06-01 02:08:27

首先,c.show()打印列表,但是您还没有为您的类定义__str__或{},所以您只能使用默认表示。试试看

def __str__(self):
    return str(self.name)

然后您可以:

^{pr2}$

或者,使用您的item.show

for i in self.items:
    i.show()

第二,在checkOut中,i是一个item,您不能将其索引到其中。如果你想要它的价格,使用点符号:i.price。在

相关问题 更多 >