从映射派生的类的类型推断

问题描述 投票:0回答:1

我有一个实现MutableMapping的类

V = TypeVar('V')
K = TypeVar('K')
class MM(MutableMapping[K, V]):
    def __getitem__(self, k):
        return 1

    def __setitem__(self, k, v):
        pass

    def __delitem__(self, k):
        pass

    def __iter__(self):
        return iter(())

    def __len__(self):
        return 0

被这样使用:

test: MM[str, int] = MM()
test["a"] = 1
var = test["a"]

变量var应该是int类型(根据类型提示),但是pycharm告诉我不能推断出它的类型。

example

这是pycharm中的错误,还是我做错了什么?

另一件事令人惊讶的是,当我将类定义更改为]时>

MM(MutableMapping[str, V])

Pycharm表示var的类型为字符串。我想念什么?

我有一个实现MutableMapping的类V = TypeVar('V')K = TypeVar('K')类MM(MutableMapping [K,V]):def __getitem __(self,k):返回1 def __setitem __(self, k,v):...

python-3.x pycharm type-hinting
1个回答
0
投票

您可能需要为每个方法添加类型提示。例如:

© www.soinside.com 2019 - 2024. All rights reserved.