2015-09-10 63 views
0

我希望用戶通過輸入參數指定他們想要實例化的類。我知道如何從請求中獲取參數,但是如何在不使用很多if語句的情況下實例化指定的類?基於請求參數實例化類

request['classToUse'] = Class1 
newClass = request['classToUse']() 

回答

1

允許用戶指定表示字符串可用類之一。通過提供的字符串查找班級。

# map class names to classes 
avail = dict((cls.__name__, cls) for cls in (Spam, Eggs, Toast)) 

@app.route('/hello') 
def hello(): 
    name = request.args['name'] 
    obj = avail[name]() 
    return 'you created a {}'.format(name) 

導航到/hello?name=Toast將創建Toast類的一個實例。

0

如果request包含Class1classToUse,那麼你的代碼應該工作。一個基本的例子來說明:

class A(object): 
    def __init__(self): 
     self.a = 5 

d = {'a': A} 
my_obj = d['a']() 
print my_obj.a 

回報

在這裏你可以看到,它被實例化與()