gpt4 book ai didi

python - 在 attrs 类中为 init 参数添加类型提示

转载 作者:行者123 更新时间:2023-12-04 15:05:03 24 4
gpt4 key购买 nike

有没有办法将 init arg 的类型提示与属性的类型提示分开?
请让我通过例子更好地解释自己。如果在常规类(class)中,我会执行以下操作:

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])>
有没有办法将这些类型提示的属性发送到它创建的 init 方法中?
也尝试在 docs 中搜索寻求解决方案,但也许我错过了。

最佳答案

我认为您遇到了一个最近已修复的错误(现在是什么时候):https://github.com/python-attrs/attrs/pull/710
所以,如果我没记错的话,21.2.0 attrs 版本将解决你的问题。不过,您必须向转换器添加类型注释。

关于python - 在 attrs 类中为 init 参数添加类型提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66317034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com