使用字符串指定`from my_package import my_class as my_custom_name`
Use string to specify `from my_package import my_class as my_custom_name`
我想使以下行动态化:
from my_package import my_class as my_custom_name
我知道如何通过字符串动态导入模块
import importlib
module_name = "my_package"
my_module = importlib.import_module(module_name)
按照建议 here。但是,它仍然不允许我指定要导入的 class (my_class
) 和我要分配给 class 名称的别名 (my_custom_name
)。我正在使用 python 3.6
两步。第一,您可以直接使用 importlib
:
引用模块
importlib.import_module('my_package.my_module') # You can use '.'.join((my_package, my_module))
您的 class 将作为属性包含在模块本身中,就像在任何导入中一样。因此,只需使用
my_custom_name = importlib.import_module('my_package.my_module').__dict__['my_class']
甚至更好
my_custom_name = getattr(importlib.import_module('my_package.my_module'), 'my_class')
我想使以下行动态化:
from my_package import my_class as my_custom_name
我知道如何通过字符串动态导入模块
import importlib
module_name = "my_package"
my_module = importlib.import_module(module_name)
按照建议 here。但是,它仍然不允许我指定要导入的 class (my_class
) 和我要分配给 class 名称的别名 (my_custom_name
)。我正在使用 python 3.6
两步。第一,您可以直接使用 importlib
:
importlib.import_module('my_package.my_module') # You can use '.'.join((my_package, my_module))
您的 class 将作为属性包含在模块本身中,就像在任何导入中一样。因此,只需使用
my_custom_name = importlib.import_module('my_package.my_module').__dict__['my_class']
甚至更好
my_custom_name = getattr(importlib.import_module('my_package.my_module'), 'my_class')