我一直在通过以下方式使用 attrs:
@attr.mutable
class Foo:
x: int = attr.ib(validator=attr.validators.instance_of(int))
@attr.mutable
class Bar:
x: int = attr.ib(validator=attr.validators.instance_of(int))
foo: Foo = attr.ib(
default=attr.Factory(factory=lambda self: Foo(self.x), takes_self=True),
validator=attr.validators.instance_of(Foo),
)
if __name__ == "__main__":
Bar("5")
当我运行代码时,我显然得到了一个错误。
但是,对我来说不直观的部分是Foo
该类的验证器引发了错误。
我可能是错的,但据此我假设x
属性的验证器Bar
出现在Foo
's 之后。
这是为什么?Bar
在将' 的x
属性作为参数传递给Foo
' 的 init 方法之前验证它不是更有意义吗?
提前致谢!