【发布时间】:2021-09-30 03:31:09
【问题描述】:
我有两个 attrs 类,其中一个是另一个的属性。我想确保如果一个特定的值被赋予,另一个特定的值。
我查看了验证器,但认为没有任何东西可以捕捉到这一点。
这是我写的:
@attr.s
class C:
a = attr.ib(validator=attr.validators.instance_of(str))
@attr.s
class D:
x = attr.ib(validator=attr.validators.instance_of(str))
z = attr.ib(validator=attr.validators.instance_of(C))
def __attrs_post_init__(self):
if self.x == "a":
assert self.z.a == "a12"
elif self.x == "b":
assert self.z.a == "b12"
elif self.x == "c":
assert self.z.a == "c12"
d = D(x="a", z=C("a12"))
我认为这行得通,但我感觉我可能遗漏了一些明显的东西。
【问题讨论】:
-
如果它们之间存在必需的关系,那么拥有两个属性有什么意义?
-
我看不出这不起作用的任何原因。
C对象在调用D()之前已完全初始化。
标签: python validation python-attrs