带班的字典吗?(Dictionary with classes?)

2019-06-27 06:37发布

在Python是有可能通过字典来实例化一个类?

shapes = {'1':Square(), '2':Circle(), '3':Triangle()}

x = shapes[raw_input()]

我想让从菜单中的用户挑选,而不是代码庞大,如果输入else语句。 例如,如果用户输入2,X然后将圆的一个新实例。 这可能吗?

Answer 1:

几乎。 你需要的是

shapes = {'1':Square, '2':Circle, '3':Triangle} # just the class names in the dict

x = shapes[raw_input()]() # get class from dict, then call it to create a shape instance.


Answer 2:

我建议一个选择器功能:

def choose(optiondict, prompt='Choose one:'):
    print prompt
    while 1:
        for key, value in sorted(optiondict.items()):
            print '%s) %s' % (key, value)
        result = raw_input() # maybe with .lower()
        if result in optiondict:
            return optiondict[result]
        print 'Not an option'

result = choose({'1': Square, '2': Circle, '3': Triangle})()


文章来源: Dictionary with classes?