在Python中作为变量的类名和导入

2024-04-19 21:34:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个单独的Python代码,在这里我可以定义default.py文件,这些文件必须在项目开始时创建,这取决于我想要的模型。因此,当我开始一个新的项目时,我不必从另一个项目复制代码和调整类名等。因此,我想自动创建一个model_1.py作为:

class Model1(object):
   code

一个型号为2.py:

^{pr2}$

我希望从另一个文件创建这些文件,在那里我定义必须创建哪些模型。例如:

models = ['Model1', 'Model2']

是否可以将类名作为变量?比如说:

class models[0]()

此外,进口部分是否可能有类似的情况?所以

from model_type_x.test import *

其中,model_type_x是一个变量?在

还有其他的可能性吗?让Python创建一个文本文件并将其转换为.py文件?在


Tags: 文件项目代码py模型defaultmodel定义
2条回答

您需要名为cookiecutter的this模块。您可以为项目创建模板,并在创建项目的提示下对其进行配置

首先,python文件只是文本文件。您只需使用.py扩展名来保存它们。在

您要实现的目标或多或少超出了python的范围。Python本身不生成代码。如果要生成代码,可以使用任何语言的模板。这并不重要,因为代码不会被执行。在

类名和导入名不能是变量。允许您定义这些语法或代码类型。在

如果要使用变量名导入,可以按如下方式导入模块:

__import__(module_name)

其中module_name是一个变量,因此如果您可以猜测如何调用或将如何导入模块,则可以使用此变量在运行时导入模块。。。尽管有可能这样做,但我不建议使用这种方法,因为那样做很难看,而且几乎没有用,因为我们通常事先知道要导入的是什么。您可以始终使用“*”但这也不是一个特别好的主意,因为模块中的某些内容不会导出,通常最好明确地告诉您要导入的内容。在

^{pr2}$

这显然是不可能的,关键字类是用来定义类型的。另一方面,你可以做的是:

locals()[models[0]] = type(models[0], parent_tuple, attributes)

但是访问locals()来定义一个局部变量,使用type构造函数来手动定义一个新类型,而不是使用class关键字,这样可以更容易地阅读。。。没有别的办法了。在

真正的问题是。。。你想达到什么目的?很可能你没有在寻找一个你不存在的问题的正确解决方案。在

相关问题 更多 >