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)