我目前正在使用Python编写基于文本的冒险作为学习练习。我想要"帮助"作为一个全局命令,存储为列表中的值,可以在(基本上)任何时间调用。当玩家进入新房间或帮助选项发生变化时,我会使用新值重置help_commands列表。但是,出于某种原因,我无法获取help_commands
中的值来更新内部的函数。
之前我问了一个类似的问题(Python: TypeError: 'list' object is not callable on global variable),并建议我可以选择一个对象。
我对Python有点新鲜,对象是我较弱的方面之一,所以我可以从某人那里得到一个例子吗?
player = {
"name": "",
"gender": "",
"race": "",
"class": "",
"HP": 10,
}
# global help_commands
help_commands = ["Save", "Quit", "Other"]
def help():
sub_help = ' | '.join(help_commands)
return "The following commands are avalible: " + sub_help
def help_test():
print help()
help_commands = ["Exit [direction], Open [object], Talk to [Person], Use [Item]"]
print help()
print "Before we go any further, I'd like to know a little more about you."
print "What is your name, young adventurer?"
player_name = raw_input(">> ").lower()
if player_name == "help":
help()
else:
player['name'] = player_name
print "It is nice to meet you, ", player['name'] + "."
help_test()
答案 0 :(得分:0)
它正在创建一个与全局变量同名的局部变量。总而言之,这不是一个非常好的编程方式 - 您可能希望拥有一个全局帮助对象,而不是......。无论如何,在你的help_test()函数中,以:
开头global(help_commands)
看看那是否符合你的要求。
这也发生在对象中......两者之间存在差异:
foo = "something"
和
self.foo = "something"
在成员函数中。如果你来自像visual basic这样的东西,像这样的概念会让你失望(幸运的是我走了另一条路,只是摇摇头)。