我在python中有一个情况,我需要加载一个模块并根据INI config中提供的值实例化一个类。
[providers]
provider=bsnl ; provider may be bsnl/airtel/vodafone/etc..
在我的课程中,我正在读取此值,在类方法中,我必须加载bsnl_provider.py并且必须实例化BSNLClass。如果提供者更改为airtel,那么我必须加载airtel_provider.py并且必须实例化AIRTElClass。
如何加载相关模块并实例化相关类?
答案 0 :(得分:-1)
如果我理解得很好,你想从ini文件中获取未来类的名称吗?
import ConfigParser
config = ConfigParser.ConfigParser()
config.read('providers.ini')
try:
provider_name = config.get("providers", "provider")
except ConfigParser.NoOptionError:
print("Unable to find provider")
raise
之后,您可以动态创建您的类(没有任何超类):
provider_class = type(provider_name.upper(), (,), {})
或与:
provider_class = type(provider_name.upper(), (MySuperClass,), {})