Python:制作库存,而不是添加到容器中

时间:2014-01-18 05:35:54

标签: python inventory

我正在尝试模拟库存,调试器没有发现任何错误,除了 当我运行文件来测试它时,它会向正在添加的项目打印false,即使它应该打印为true。它没有告诉我代码中有错误,所以我不知道在哪里看。如果你能告诉我我需要改变什么,那么它将在最后(print(sword in bag))返回true,这将是一个很大的帮助。 TY。

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)

1 个答案:

答案 0 :(得分:2)

您的方法定义中看起来错误拼写了__contains__