Python 中的菜单功能和 类

Menu Function and Classes in Python

class Character:
    def __init__(self, name,):
        self.name = name

    def help (self):
        print (menu.keys())

    def name(self):
        print ("Hast du schon vergessen ? ")

c = Character
c.name = input("Wie heißt du denn ? ")
print ("Help, wenn du Hilfe brauchst")
menu ={"help":Character.help,
       "name":Character.name}

#This function allows you call up the main menu at any point in the game.  
while True :
  line = input(">")
  args = line.split()
  if len(args) < 4:
    Befehl_vorhanden = False
    for c in menu.keys():
      if args[0] == c[:len(args[0])]:
        menu[c](c)
        Befehl_vorhanden = True
        break
    if not Befehl_vorhanden:
      print ("ich verstehe dich nicht.")

感谢其他 stack overflow 用户的帮助,我能够得到我的代码 运行。我为我的游戏创建了一个可以随时调用的菜单。但是,它不允许我打印任何文本。例如,如果我输入 "name",它会给我。

TypeError: 'str' 对象不可调用

我什至尝试过在没有菜单的情况下将其用作基本功能。但是,我似乎无法让这段代码工作。

如有任何建议,我们将不胜感激。

提前致谢,

克里斯

您的线路:

c.name = input("Wie heißt du denn ? ")

将方法 Character.name 分配给一个字符串,因此您在行 menu[c](c) 上得到 'str' object not callable because menu[c] is Character.name.

更新:

这个程序可能更接近您正在寻找的程序:

class Character:
    def __init__(self, name):
        self.namen = name

    def help (self):
        print (menu.keys())

    def name(self):
        print ("Hast du schon vergessen ? ", self.namen)

c = Character(input("Wie heißt du denn ? "))
print ("Help, wenn du Hilfe brauchst")
menu ={"help":c.help,
       "name":c.name}

#This function allows you call up the main menu at any point in the game.  
while True :
  line = input(">")
  args = line.split()
  if len(args) < 4:
    if args[0] in menu:
        k = args[0]
        menu[k]()
    else:
      print ("ich verstehe dich nicht.")

请注意我如何更改 __init__() 以执行:self.namen = name 因为您的版本 覆盖了 def name(self): 的声明。