标记不可变

(类来自 pyomo.common.config)

class pyomo.common.config.MarkImmutable(*args)[源代码]

基础类:object

将ConfigValue的实例标记为不可变。

Parameters:

config_value (ConfigValue) – 应该被标记为不可变的ConfigValue实例。 注意,可以传递多个ConfigValue实例。

示例

config = ConfigDict()
config.declare('a', ConfigValue(default=1, domain=int))
config.declare('b', ConfigValue(default=1, domain=int))
locker = MarkImmutable(config.get('a'), config.get('b'))

现在,config.a 和 config.b 无法更改:

>>> config.a = 5
Traceback (most recent call last):
   ...
RuntimeError: ConfigValue 'a' is currently immutable
>>> print(config.a)
1

使它们再次可变,

>>> locker.release_lock()
>>> config.a = 5
>>> print(config.a)
5

请注意,这也可以用作上下文管理器:

>>> with MarkImmutable(config.get('a'), config.get('b')):
...     config.a = 10
Traceback (most recent call last):
   ...
RuntimeError: ConfigValue 'a' is currently immutable
>>> print(config.a)
5
>>> config.a = 10
>>> print(config.a)
10
__init__(*args)[source]

方法

__init__(*args)

lock()

release_lock()

成员文档