Python 如何为用户raw_input()创建全局命令;访问库存清单?
我真的不是100%确定如何提问,但下面是: 我正在艰难地学习Python,我在Ex.45上,我应该自己创建一个基于文本的游戏。我不得不提取其他人的代码来制作一个清单,我将提供下面的代码,但我一辈子都无法解决这个问题:如果用户在多个类的任何原始输入中键入清单,我如何让它显示清单的内容?我所能想到的是一个更复杂的版本:Python 如何为用户raw_input()创建全局命令;访问库存清单?,python,python-2.7,Python,Python 2.7,我真的不是100%确定如何提问,但下面是: 我正在艰难地学习Python,我在Ex.45上,我应该自己创建一个基于文本的游戏。我不得不提取其他人的代码来制作一个清单,我将提供下面的代码,但我一辈子都无法解决这个问题:如果用户在多个类的任何原始输入中键入清单,我如何让它显示清单的内容?我所能想到的是一个更复杂的版本: if raw_input() == "inventory" print ??? 但我不知道如何有游戏显示库存???或允许库存成为全局命令。。。 我知道这看起来很简单,但除非
if raw_input() == "inventory"
print ???
但我不知道如何有游戏显示库存???或允许库存成为全局命令。。。
我知道这看起来很简单,但除非我自己研究并试图找到答案,否则我不会来这里。感谢所有能帮忙的人,这让人很沮丧
以下是我使用的库存系统:
class Item(object):
def __init__(self, name, quantity=1):
self.name = name
self.raw = name.strip().lower()
self.quantity = quantity
class Container(object):
def __init__(self, name):
self.name = name
self.inside = {}
def __iter__(self):
return iter(self.inside.items())
def __len__(self):
return len(self.inside)
def __contains__(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:
print "ERROR."
if item in self:
self[item].quantity += quantity
else:
self[item] = item
inventory = Container("Inventory")
spare_key = Item("SPARE KEY", 1)
rock = Item("ROCK", 1)
print(spare_key in inventory)
打印容器类实例内容的简单方法: 考虑更改此功能:
def __iter__(self):
return iter(self.inside.items())
为此:
def __iter__(self):
return iter(self.inside.values())
通常,您会期望在库存上迭代只生成项目,而不是包含项目名称和项目的元组
def __iter__(self):
return iter(self.inside.values())