簡體   English   中英

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

[英]Python: Making inventory, not adding to the container

我正在嘗試模擬一個庫存,並且調試器沒有發現任何錯誤,除非我運行該文件進行測試,它會向正在添加的項目打印false,即使它應該打印為true。 它沒有告訴我代碼中有錯誤,所以我不知道在哪里看。 如果你能告訴我我需要改變什么,那么它最終會回歸真實( print(sword in bag) )這將是一個很大的幫助。 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)

看起來你的方法定義中拼錯了__contains__

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM