在python中基于ini config实例化类

时间:2018-02-22 13:10:56

标签: python python-3.x python-2.7

我在python中有一个情况,我需要加载一个模块并根据INI config中提供的值实例化一个类。

[providers]
provider=bsnl  ; provider may be bsnl/airtel/vodafone/etc..

在我的课程中,我正在读取此值,在类方法中,我必须加载bsnl_provider.py并且必须实例化BSNLClass。如果提供者更改为airtel,那么我必须加载airtel_provider.py并且必须实例化AIRTElClass。

如何加载相关模块并实例化相关类?

1 个答案:

答案 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,), {})