Python中作为变量的类名和导入
我想要一个单独的Python代码,在这里我可以定义默认的.py文件,这些文件必须在项目开始时创建,具体取决于我想要的模型。因此,当我启动一个新项目时,我不必从其他项目复制代码和调整类名等。例如,我想自动创建一个模型_1.py,如下所示:Python中作为变量的类名和导入,python,Python,我想要一个单独的Python代码,在这里我可以定义默认的.py文件,这些文件必须在项目开始时创建,具体取决于我想要的模型。因此,当我启动一个新项目时,我不必从其他项目复制代码和调整类名等。例如,我想自动创建一个模型_1.py,如下所示: class Model1(object): code 模型_2.py为: class Model2(object): code 我想从另一个文件创建这些模型,在那里我定义了必须创建的模型。例如: models = ['Model1', 'Mode
class Model1(object):
code
模型_2.py为:
class Model2(object):
code
我想从另一个文件创建这些模型,在那里我定义了必须创建的模型。例如:
models = ['Model1', 'Model2']
是否可以将类名作为变量?比如:
class models[0]()
此外,进口部分是否也可能出现类似情况?所以
from model_type_x.test import *
其中模型类型是一个变量
还有什么其他的可能性?让Python创建一个文本文件并将其转换为.py文件?您需要名为cookiecutter的模块。您可以为您的项目配置模板,并在模板中配置创建项目的提示。首先,python文件只是文本文件。您只需使用
.py
扩展名保存它们
您试图实现的目标或多或少超出了python的范围。Python本身不会生成代码。如果您想生成代码,您可以使用您喜欢的任何语言的模板。这其实并不重要,因为代码不会被执行
类名和导入名不能是变量。这些语法允许您定义类型或导入代码
如果要使用变量名导入,可以按如下方式导入模块:
__import__(module_name)
其中module_name是一个变量,所以如果您能猜出模块是如何调用或将如何导入的,那么您可以在运行时使用该变量导入模块。。。尽管有可能做到这一点,但我不建议使用这种方法,因为这样做非常难看,也毫无用处,因为我们通常事先知道要导入什么。您可以始终使用“*”,但这也不是一个特别好的主意,因为模块中的某些内容无法导出,通常最好明确地告诉您要导入的内容
class models[0]()
这显然是不可能的,关键字类用于定义类型。另一方面,您可以做的是:
locals()[models[0]] = type(models[0], parent_tuple, attributes)
但是访问locals()
来定义局部变量,使用type
构造函数手动定义一个新类型,而不是使用class
关键字来定义一个局部变量,这使得事情更容易阅读。。。这样做没有任何意义
这里真正的问题是。。。你想达到什么目标?很可能您没有为您没有遇到的问题寻找正确的解决方案。向我们展示您已经尝试过的代码