我想用户定义一系列字符串
user_input = ('cat', 'cactus', 'cat')
对应于要从可能对象的字典中实例化的一系列对象
classes = {
'cat': Cat,
'cactus': Cactus,
}
Cat
和Cactus
对应于从父类下降的类
class Pet():
...
class Cat(Pet):
def __init__(self, name, colour):
Pet.__init__(self, name, colour)
...
class Cactus(Pet):
def __init__(self, name, colour):
Pet.__init__(self, name, colour)
...
我尝试将对象类型添加到列表
pet_types = []
for i in range(0,3):
try:
pet_type.append(classes[user_input[i]])
except:
raise Exception('type no exist')
但是当我这样做的时候会引发异常,告诉我"输入不存在"当字符串与字典条目完全对应时!为什么会这样?
然后我想像这样使用pet_types
pet_500 = pet_types[500](name,colour)
答案 0 :(得分:3)
捕获任何异常(except:
)都是一种狡猾的做法,就像隐藏原始异常一样,甚至没有记录它。
在这种情况下,这两种狡猾的做法的结合隐藏了这样一个事实:你有一个错字,并且你试图访问未定义的pet_type
(单数),而不是你实际拥有的变量 - pet_types
(复数)。解决它,你应该没事。