Python中不可变对象的类型是什么(对于mypy)

Jea*_* T. 1 python python-3.x mypy

我总是mypy在我的Python程序中使用。

typing不可变对象的类型(来自)是什么,可以用于字典键的对象是什么?

回到上下文,我想编写一个从字典继承的类,我有以下代码

class SliceableDict(dict):
    def __getitem__(self, attr:Any) -> Any:
        return super().__getitem__(attr)
Run Code Online (Sandbox Code Playgroud)

在那种情况下,类型提示是没有用的,不是吗?

谢谢

Sha*_*ger 6

typing.Hashable指可以充当 a 中的有效键dict或 a 中的值的任何类型set

它不需要真正的不变性(任何对象都可以定义__hash__),但一般来说,可散列的东西应该是“被视为不可变的”东西,因为如果它们在插入 a 后set或作为 a 插入后发生变异,它就会破坏东西dict钥匙。


jwo*_*der 5

的键是dict哈希的(请参阅文档的第一句话dict),可哈希类型是typing.Hashable的别名collections.abc.Hashable