动态隐式域

(类来自 pyomo.common.config)

class pyomo.common.config.DynamicImplicitDomain(callback)[source]

基础类:object

可以根据键返回自定义域的隐式域。

这提供了一种管理类似插件系统的机制,其中键指定了额外配置信息的来源。例如,给定插件模块, pyomo/common/tests/config_plugin.py:

from pyomo.common.config import ConfigDict, ConfigValue


def get_configuration(config):
    ans = ConfigDict()
    ans.declare('key1', ConfigValue(default=0, domain=int))
    ans.declare('key2', ConfigValue(default=5, domain=str))
    return ans(config)

然后我们可以声明一个 :class:``ConfigDict`,它从与键名匹配的模块中导入特定键的域:

def _pluginImporter(name, config):
    mod = importlib.import_module(name)
    return mod.get_configuration(config)
config = ConfigDict()
config.declare('plugins', ConfigDict(
    implicit=True,
    implicit_domain=DynamicImplicitDomain(_pluginImporter)))
config.plugins['pyomo.common.tests.config_plugin'] = {'key1': 5}
config.display()
plugins:
  pyomo.common.tests.config_plugin:
    key1: 5
    key2: '5'

注意

此初始化器仅对ConfigDictimplicit_domain参数有用(而不适用于“常规”的domain参数)

Parameters:

callback (Callable[[str, object], ConfigBase]) – 一个可调用的(函数),它接收ConfigDict的键和值,并期望返回适当的Config对象(ConfigValue、ConfigList或ConfigDict)

__init__(callback)[源代码]

方法

__init__(callback)

成员文档