Python:生成库存,而不是添加到contain中

2024-04-24 04:27:16 发布

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

我试图模拟一个清单,调试器没有发现任何错误,除了 当我运行该文件来测试它时,它会将false打印到要添加的项上,即使它应该打印为true。它并没有通知我代码中有错误,所以我不知道该去哪里查找。如果您能告诉我需要更改什么,以便它在结尾返回true(print(sword in bag)),那将是一个很大的帮助。泰。在

class Item(object):
    def __init__(self, name, value, quantity=1):
        self.name = name
        self.raw = name.strip().lower()
        self.quantity = quantity

        self.value = value
        self.netValue = quantity * value

    def recalc(self):
        self.netValue = self.quantity * self.value


class Container(object):

    def __init__(self, name):
        self.name = name
        self.inside = {}

    def __iter__(self):
        return iter(list(self.inside.items()))

    def __len__(self):
        return len(self.inside)

    def __containts__(self, item):
        return item.raw in self.inside

    def __getitem__(self, item):
        return self.inside[item.raw]

    def __setitem__(self, item, value):
        self.inside[item.raw] = value
        return self[item]

    def add(self, item, quantity=1):
        if quantity < 0:
            raise ValueError("Negative Quantity, use remove()")

        if item in self:
            self[item].quantity += quantity
            self[item].recalc()
        else:
            self[item] = item

    def remove(self, item, quantity=1):
        if item not in self:
            raise KeyError("Not in container")
        if quantity < 0:
            raise ValueError("Negative quantity, use add() instead")

        if self[item].quantity <= quantity:
            del self.inside[item.raw]
        else:
            self[item].quantity -= quantity
            self.item.recalc()

bag = Container("BagOfHolding")

sword = Item("Sword", 10) potion = Item("Potion", 5) gold = Item("Gold coin", 1, 50)

bag.add(sword)

print(sword in bag) print(potion in bag)

Tags: nameinselfrawreturnifvaluedef