Я пытаюсь использовать словарь с функцией как значение, ноНевозможно использовать функцию из словаря
NameError: name 'oak' is not defined
останавливает выполнение перед показом что-нибудь еще.
Это класс с диспетчером:
from hab_oak import Oak
from pokemon import Pokemon
from hab_brock import GimnasioBrock
class Juego(object):
habs = {
'Oak' : oak
}
def __init__(self):
oak = Oak()
maproom, pok = oak.execution()
self.Pokemon = pok
dispatcher(Juego.habs.get(maproom), self.Pokemon)
def dispatcher(command, arg):
send(habs[command](arg))
def oak(self, pokemon):
GimnasioBrock(pokemon)
Я довольно уверен, что следующий класс Дуб не один дает ошибку, но это один из которых конкретизируется в Juego. инициализации
from sys import exit
from random import randint
from pokemon import Pokemon
from hab_brock import GimnasioBrock
class Oak(object):
def execution(self):
print "Bienvenido, soy Oak. Elige un pokemon."
print "Puedes elegir Charmander, Squirtle o Bulbasaur:"
pokemon_elegido = raw_input("> ")
if (pokemon_elegido == "Charmander"):
pokemon = Pokemon("Charmander", 20, 5)
elif (pokemon_elegido == "Bulbasaur"):
pokemon = Pokemon("Bulbasaur", 20, 5)
elif(pokemon_elegido == "Squirtle"):
pokemon = Pokemon("Squirtle", 20, 5)
print "Te enfrentaras a Brock."
return "Oak", pokemon
Вы используете dict как [переменную класса, а не переменную экземпляра] (https://docs.python.org/2/tutorial/classes.html#class-and-instance-variables), поэтому «дуб 'не определяется при его вычислении. –
Это очень запутанно иметь «дуб» и «дуб» как в этой программе – mauve
'NameError', gotta catch em all –