Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列表中创建多个类_Python_Python 3.x - Fatal编程技术网

Python 从列表中创建多个类

Python 从列表中创建多个类,python,python-3.x,Python,Python 3.x,是否可以从列表中创建多个类,如下所示: for cn in ['ABC', 'DEF', 'GHI']: class {cn.capitalize()?}(Base): __mapper_args__ = { 'polymorphic_identity': cn.lower(), } 注意:在我找到的所有标题类似的问题中,提问者实际上希望从一个类创建多个对象您可以在运行时使用以下方法创建新类: 好啊这些类在dict中,但是如何在系

是否可以从列表中创建多个类,如下所示:

for cn in ['ABC', 'DEF', 'GHI']:
    class {cn.capitalize()?}(Base):
        __mapper_args__ = {
            'polymorphic_identity': cn.lower(),
        }

注意:在我找到的所有标题类似的问题中,提问者实际上希望从一个类创建多个对象

您可以在运行时使用以下方法创建新类:


好啊这些类在dict中,但是如何在系统模块中获取它们呢
[inspect.getmembers(sys.modules[\uuu name\uuuu])中的name for name,obj如果inspect.isclass(obj)]
您应该描述主要用途。你在用炼金术吗?也许,它提供了一些低级API,可以帮助您解决SqlAlchemy问题;但是在一个独立的py中,您认为这是不可能的吗?您可以尝试将所有生成的类放入
globals()
字典中,尽管我不知道SQLAlchemy是否能够使用它们。有关详细信息,请参见此答案:首先可以使用答案中所述的
type
创建所有类,然后将它们添加到
gloabals()
In [17]: class_names = ['ABC', 'DEF', 'GHI']

In [18]: classes = {name: type(name.capitalize(), (Base,),
                      {'__mapper_args__': {'polymorphic_identity': name.lower()}})
           for name in class_names}

In [19]: classes['DEF']
Out[19]: __main__.Def

In [20]: classes['ABC']().__mapper_args__
Out[20]: {'polymorphic_identity': 'abc'}

In [21]: import inspect

In [22]: inspect.getmro(classes['GHI'])
Out[22]: (__main__.Ghi, __main__.Base, object)