【发布时间】:2018-03-20 00:54:49
【问题描述】:
我希望用户定义一系列字符串
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)
【问题讨论】:
-
首先不要使用毯子
try...except。引发的实际异常是什么? -
旁注:当你可以直接循环
user_input时,不要循环range()。 -
我认为您正在寻找工厂模式。 en.wikipedia.org/wiki/Factory_method_pattern
标签: python class oop dictionary instantiation