在编写如下所示的简单 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
实际上不会运行我的代码,但我想知道上述是否可行,或者是否也为自定义类公开了与内置映射中相同的技巧。