Python 如何为用户raw_input()创建全局命令;访问库存清单?

Python 如何为用户raw_input()创建全局命令;访问库存清单?,python,python-2.7,Python,Python 2.7,我真的不是100%确定如何提问,但下面是: 我正在艰难地学习Python,我在Ex.45上,我应该自己创建一个基于文本的游戏。我不得不提取其他人的代码来制作一个清单,我将提供下面的代码,但我一辈子都无法解决这个问题:如果用户在多个类的任何原始输入中键入清单,我如何让它显示清单的内容?我所能想到的是一个更复杂的版本: if raw_input() == "inventory" print ??? 但我不知道如何有游戏显示库存???或允许库存成为全局命令。。。 我知道这看起来很简单,但除非

我真的不是100%确定如何提问,但下面是:

我正在艰难地学习Python,我在Ex.45上,我应该自己创建一个基于文本的游戏。我不得不提取其他人的代码来制作一个清单,我将提供下面的代码,但我一辈子都无法解决这个问题:如果用户在多个类的任何原始输入中键入清单,我如何让它显示清单的内容?我所能想到的是一个更复杂的版本:

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())