在 Python 中按全名创建实例
create instance by full name in Python
改写:
我想用 class 个名称创建 class 个实例。这些名称按顺序保存在 json 配置文件中。它们在 python 文件中定义。一些 class 具有相同的名称但在不同的文件夹中。
使用一个简单的例子如下:
文件夹为:
folderA/User.py #define class User
folderB/User.py #define class User
在mymain.py中,我从配置文件中按顺序读取名称,比如"folderA.User","folderB.User",它们是字符串。
我想在 运行 时将这些字符串转换为相应的实例。请注意,配置文件可能会更改。这就是为什么我需要动态创建。
好的,我不会用globals(),我该怎么办?
你每次都试过这个代码吗yourfile.py
import sys
sys.path.insert(1, '/path/to/application/app/folder')
import file
实际上是 globals() 函数。是一本字典
其语法如下:
globals() -> dictionary
例如
>>>globals()['z'] = 23
>>>z
23
sys.path.insert(1, '/path/to/application/app/folder')
import file1
import file2
sys.path.insert(2, '/path/to/application/app/folder2')
import file3
import file4
改写:
我想用 class 个名称创建 class 个实例。这些名称按顺序保存在 json 配置文件中。它们在 python 文件中定义。一些 class 具有相同的名称但在不同的文件夹中。
使用一个简单的例子如下: 文件夹为:
folderA/User.py #define class User
folderB/User.py #define class User
在mymain.py中,我从配置文件中按顺序读取名称,比如"folderA.User","folderB.User",它们是字符串。
我想在 运行 时将这些字符串转换为相应的实例。请注意,配置文件可能会更改。这就是为什么我需要动态创建。
好的,我不会用globals(),我该怎么办?
你每次都试过这个代码吗yourfile.py
import sys
sys.path.insert(1, '/path/to/application/app/folder')
import file
实际上是 globals() 函数。是一本字典 其语法如下:
globals() -> dictionary
例如
>>>globals()['z'] = 23
>>>z
23
sys.path.insert(1, '/path/to/application/app/folder')
import file1
import file2
sys.path.insert(2, '/path/to/application/app/folder2')
import file3
import file4