使用这里的复杂示例https://www.attrs.org/en/stable/api.html#attrs.converters.default_if_none,我收到 mypy 错误:不支持的转换器,仅命名函数、类型和 lambda目前支持
def complicated(value, self_, field):
return int(value) * self_.factor + field.metadata["offset"]
@define
class C:
factor = 5 # not an *attrs* field
x = field(
metadata={"offset": 200},
converter=attrs.Converter(
complicated,
takes_self=True, takes_field=True
))
C("42")
C(x=410)
mypy 只是不支持这一点。有很多完全安全、有效、优良的代码 mypy 不支持。你可以用
# type: ignore
注释告诉 mypy 忽略它,或者你可以停止这样编写代码。