我正在使用 attrs 库为路径创建数据结构。我希望第一个属性是其他自动加入的根目录。我想要这样的东西:
def my_converter(obj, value):
return os.path.join(obj.root, value)
class Paths:
root = attr.ib()
relative = attr.ib(converter=my_converter)
这可以解决问题,但converter
函数只给出一个参数。是否有一种干净的方法可以在验证之前使用其他属性转换值?需要三个参数(其中validator
一个是对象),但它不是转换值的正确位置。将所有内容都投入其中也__attrs_post_init__
违背了使用 attrs 的目的。