有没有办法将 init arg 的类型提示与属性的类型提示分开?
请让我通过例子更好地解释自己。如果在普通班上,我会做类似的事情:
from math import ceil
from typing import Union
class Foo:
def __init__(self, bar: Union[int, float]):
self.bar: List[str] = ['example'] * ceil(bar)
attrs 中的等价物是什么?也许这个?
import attr
@attr.s
class Baz:
bar: List[str] = attr.ib(converter=lambda bar_: ['example'] * ceil(bar_))
我认为不是因为当我尝试以下操作时,我没有得到匹配的结果:
Baz.__init__.__annotations__ # Returned: {'return': None}
signature(Baz) # Returned: <Signature (bar) -> None>
Foo.__init__.__annotations__ # Returned: {'bar': typing.Union[int, float]}
signature(Foo) # Returned: <Signature (bar: Union[int, float])>
有没有办法将这些类型提示的 attrs 信号发送到它创建的 init 方法中?
还尝试在文档中搜索解决方案,但也许我错过了。