gpt4 book ai didi

python - 输入空 __slots__ (或空元组)的规范方法是什么?

转载 作者:行者123 更新时间:2023-12-03 08:25:24 27 4
gpt4 key购买 nike

如果我输入插槽:

class Foo:
__slots__: Tuple[()] = tuple()

然后,在严格模式下,mypy (0.812) 告诉我:

Incompatible types in assignment (expression has type "Tuple[<nothing>, ...]", variable has type "Tuple[]")

我可以写:

__slots__: Tuple[()] = cast(Tuple[()], tuple())

但这很丑陋。执行此操作的规范方法是什么? mypy Tuple[<nothing>, ...] 是什么意思? ?元组是不可变的,所以空元组肯定不应该是……可变数量的无内容……?

最佳答案

问题不在于注释,而在于值。使用文字元组明确表示固定大小的元组,包括空元组:

class Foo:
__slots__: Tuple[()] = ()

请注意,MyPy 将正确推断此 __slots__ 的类型即使没有注释。


可调用 tuple返回类型为 Tuple[T, ...] ,因为对于大多数输入来说,输出长度是未知的。 The call tuple() is not special cased.tuple() 一样没有任何推断值(value) T来自,there is no type inhabiting T – its type is <nothing> .

关于python - 输入空 __slots__ (或空元组)的规范方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66838653/

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