2016-07-21 2 views
0

В настоящее время я участвую в программировании текстового приключения на Python в качестве учебного упражнения. Я хочу, чтобы «help» была глобальной командой, хранящейся в виде значений в списке, которая может быть вызвана (по существу) в любое время. Когда игрок входит в новую комнату или меняются параметры справки, я возвращаю список help_commands с новыми значениями. Однако по какой-то причине я не могу получить значения в help_commands для обновления внутри функция.Python: Локальное назначение значений глобальному списку

Я задал аналогичный вопрос раньше (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

Он создает локальную переменную с тем же именем, что и глобальная переменная. В целом, это не очень хороший способ программирования - вместо этого вы можете захотеть создать глобальный объект справки ... или нет. В любом случае, в функции help_test(), начните с:

global(help_commands) 

И посмотреть, если это делает то, что вы хотите.

Это происходит в объектах, тоже .... есть разница между:

foo = "something" 

и

self.foo = "something" 

внутри функции-члена. Если вы исходите из чего-то вроде визуального базового, такие понятия, как эти, будут вскормить вас (к счастью, я пошел в другую сторону и просто покачал головой в VB).

+0

Я думаю, что VB приводит к встряхиванию головы у многих. Спасибо за помощь! –

Смежные вопросы