【问题标题】:Create multiple classes from List of Strings从字符串列表创建多个类
【发布时间】:2016-07-09 15:20:28
【问题描述】:

我有一个字符串列表如下:

list = ['ContactHandler', 'LogHandler', 'FileHandler', 'SystemHandler', 'WelcomeHandler'] 

我想使用这个列表在 for 循环中创建 5 个类。一个类的示例如下所示。

class WelcomeHandler(BaseHandler):
        def get(self):
            response = HTTPResponse()
            response.write('WelcomeHandler')
            return response

【问题讨论】:

标签: python list python-2.7 class


【解决方案1】:

您应该为您的类使用字典并像这样定义它们:

classes = {}
for name in classlist:
    class Handler(BaseHandler):
        def get(self):
            response = HTTPResponse()
            response.write(self.__class__.__name__)
            return response
    Handler.__name__ = name
    classes[name] = Handler

【讨论】:

  • 我可以从 another.py 中用字典中的给定名称导入这些类吗?
  • 不完全是。不过,您可以使用import myfile; WelcomeHandler = myfile.classes['WelcomeHandler']。 (假设这个文件被称为myfile.py
【解决方案2】:

制作一个将名称映射到类的字典:

classLookup = {
    'ContactHandler': ContactHandler, 
    'LogHandler'    : LogHandler,
    #...
}

然后就可以根据字符串实例化正确的类了

className = input('what class to instantiate?')
handler = classLookup[className]()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 2013-08-11
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2016-02-13
    相关资源
    最近更新 更多