Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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 - Fatal编程技术网

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

Python中作为变量的类名和导入,python,Python,我想要一个单独的Python代码,在这里我可以定义默认的.py文件,这些文件必须在项目开始时创建,具体取决于我想要的模型。因此,当我启动一个新项目时,我不必从其他项目复制代码和调整类名等。例如,我想自动创建一个模型_1.py,如下所示: class Model1(object): code 模型_2.py为: class Model2(object): code 我想从另一个文件创建这些模型,在那里我定义了必须创建的模型。例如: models = ['Model1', 'Mode

我想要一个单独的Python代码,在这里我可以定义默认的.py文件,这些文件必须在项目开始时创建,具体取决于我想要的模型。因此,当我启动一个新项目时,我不必从其他项目复制代码和调整类名等。例如,我想自动创建一个模型_1.py,如下所示:

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
关键字来定义一个局部变量,这使得事情更容易阅读。。。这样做没有任何意义


这里真正的问题是。。。你想达到什么目标?很可能您没有为您没有遇到的问题寻找正确的解决方案。

向我们展示您已经尝试过的代码