在 attr.s-based hydra Structured Configs 中,属性转换器可用于在参数定义期间进行属性转换。下面是一个示例,其中使用属性转换器实现了将字符串列表转换为其内部值的示例。
首先,我们要导入所需的依赖项:
from typing import List
from attr import attrs, attrib, converters
from omegaconf import DictConfig
然后定义一个用于转换字符串列表的转换器:
class ListConverter:
"""
Convert a list of strings to its internal value type.
"""
def __call__(self, value: List[str]) -> List[int]:
return [int(v) for v in value]
接下来,我们定义一个使用属性转换器的参数类:
@attrs
class Config:
"""
A Hydra configuration.
"""
values: List[int] = attrib(converter=converters.optional(ListConverter()), default=None)
在这个示例中,我们定义了一个名为 Config 的 hydra 参数类,它有一个名为 values 的属性。该值是一个由字符串列表转换而来的整数列表,我们使用了一个可选的 ListConverter 转换器来达到这个目的。
最后,我们可以测试一下这个配置类的使用:
cfg = Config(values=["1", "2", "3"])
print(cfg.values) # Output: [1, 2, 3]
这里我们传入了一个由字符串列表组成的值给配置类,并检查了转换后的结果。