0

在编写如下所示的简单 python 程序时,pyright可以检测到我的地图中有键 1、2、3,以及后来使用[ ]符号添加的 10、11。

我可以为自定义类型实现相同类型的推断,例如以下?

from typing import Mapping
class A(Mapping):
    def __init__(self):
        self._map = {1: "a", 2: "b", 3: "c"}

    def __getitem__(self, i: int) -> str:
        return self._map[i]
    def __setitem__(self, i, val) -> None:
        self._map[i] = val
    def __iter__(self):
        return self._map.__iter__()
    def __len__(self):
        return self._map.__len__()

a = A()
a[...  # Can I get autosuggetions for 1, 2, 3 here?
a[10] = 15
a[...  # Can I get autosuggetsions for 1, 2, 3, *10* here?

我知道这pyright实际上不会运行我的代码,但我想知道上述是否可行,或者是否也为自定义类公开了与内置映射中相同的技巧。

4

0 回答 0