【发布时间】:2021-03-25 16:47:38
【问题描述】:
我使用@attr.s 创建了一个类,并定义了一个属性验证器和 attrs_post_init() 方法。我希望在实例化此类的对象时自动调用这些方法。但是这些似乎根本不会在 init() 之前或之后的任何时间被调用。
import attr
from typeguard import typechecked
from typing import Any, Optional
@attr.s(auto_attribs=True, init=False)
class Entry:
name: Optional[str] = attr.ib()
@typechecked
def __init__(
self, name: Optional[str] = None
):
print("Entered init")
self.name = name
@name.validator
def name_validator(self, _attribute: Any, value: Optional[str]) -> None:
print("Entered validator")
def __attrs_post_init__(self) -> None:
print("Entered post")
Entry("Bob")
这只会打印Entered init。
什么时候调用属性验证器和 attrs_post_init() 方法?
【问题讨论】: