使用var()从用户输入实例化对象。语法错误

问题描述 投票:0回答:1

我已经创建了这些类,现在我正在尝试创建一个函数,该函数允许您从用户输入的数据实例化一个新对象。但是使用var()

时出现语法错误

类结构是,一个主类具有两个子类。主要的“口袋妖怪”是:

class Gokemon:
    def __init__(self,NAME,TYPE,HEALTH,POWER): #Contructor #Mayb think about using dict key words
        self._Name = str(NAME)
        self._Type = str(TYPE) #Water, Earth, Fire or Flying. Used in Battle() to allow adders
        self._HP = int(HEALTH) #Health Points
        self._DP = int(POWER) #Power Points - attacking power

,这两个子类分别命名为“ Tame”和“ Wild”。

class Tame(Gokemon):
    def __init__(self,NAME,TYPE,HEALTH,POWER):
        Gokemon.__init__(self,NAME,TYPE,HEALTH,POWER)
        self._Owner = ""
        self._Time = 0 #How long have they owned it

class Wild(Gokemon):
    def __init__(self,NAME,TYPE,HEALTH,POWER):
        Gokemon.__init__(self,NAME,TYPE,HEALTH,POWER)

通过用户输入制作新对象的功能如下:

 def NewGokemon():
        n = input("What's its name?: ")
        while True:
            t = input("what's its type?: ")
            if t == "Water" or t == "Fire" or t=="Earth" or t =="Flying":
                break
            else:
                print("please try again, the types include:\nFire\nWater\nEarth\nFlying")
        while True:
            h = input("How many Health Points(HP) does it have")
            try:
                int(h)/2
            except ValueError:
                print("Sorry please input a numerical value")
            else:
                break
        while True:
            p = input("How many Health Points(HP) does it have")
            try:
                int(p)/2
            except ValueError:
                print("Sorry please input a numerical value")
            else:
                break
        while True:
            dom  = input("Is the Gokemon tame(input t) or wild(input w)?")
            if dom =="t":
                return var()[n] = Tame(n,t,h,p) 
            if dom == 'w':

                return var()[n] = Wild(n,t,h,p)

该函数可以正常使用,直到在我执行我的编辑器(VS代码)的编译时显示在底部。

  File "c:\Users\rufar\Desktop\python\little projects\Gokemon - learning class\Gokemon.py", line 38
    return var()[n] = Tame(n,t,h,p) 
                    ^
SyntaxError: invalid syntax

我在做什么错?有更好的方法吗?

python python-3.x syntax syntax-error var
1个回答
0
投票

用vars()替换了整个位:

   while True:
            dom  = input("Is the Gokemon tame(input t) or wild(input w)?")
            if dom =="t":
                globals()[n] = Tame(n,t,h,p)
                return n 
            elif dom == 'w':
                globals()[n] = Wild(n,t,h,p)
                return n
            else:
                print("Did not understand input")

现在工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.