Python:在本地为全局列表分配值

时间:2016-07-21 18:57:08

标签: python python-2.7 object

我目前正在使用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()

1 个答案:

答案 0 :(得分:0)

它正在创建一个与全局变量同名的局部变量。总而言之,这不是一个非常好的编程方式 - 您可能希望拥有一个全局帮助对象,而不是......。无论如何,在你的help_test()函数中,以:

开头
global(help_commands)

看看那是否符合你的要求。

这也发生在对象中......两者之间存在差异:

foo = "something"

self.foo = "something"

在成员函数中。如果你来自像visual basic这样的东西,像这样的概念会让你失望(幸运的是我走了另一条路,只是摇摇头)。