我试图模拟一个清单,调试器没有发现任何错误,除了
当我运行该文件来测试它时,它会将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)
看起来您在方法定义中拼错了
__contains__
。在相关问题 更多 >
编程相关推荐