我总是在我的 Python 程序中使用typing
。
不可变对象的类型(来自class SliceableDict(dict):
def __getitem__(self, attr:Any) -> Any:
return super().__getitem__(attr)
)是什么,可以用作字典键的对象?
要回到上下文中,我想编写一个从dictionary继承的类,我有以下代码
{
test: /\.css$/,
use: extractCSS.extract(
{
fallback: 'style-loader',
use: [{
loader: 'css-loader',
options: {
modules: true,
importLoaders: 1,
localIdentName: '[name]__[local]___[hash:base64:5]',
},
},
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: () => [
require('autoprefixer')({}),
require('postcss-discard-empty')({}),
require('postcss-discard-comments')({}),
require('postcss-color-function')({}),
require('postcss-flexbugs-fixes')({}),
require('cssnano')({
preset: ['default', {
discardComments: {
removeAll: true,
},
colormin: false,
cssDeclarationSorter: false,
}],
}),
],
},
},
],
}),
},
那种情况下的类型提示是没有用的,不是吗?
谢谢
答案 0 :(得分:5)
dict
的键是hashable(请参阅the first sentence of the docs on dict
),可哈希类型是typing.Hashable
,是collections.abc.Hashable
的别名。
答案 1 :(得分:3)
typing.Hashable
是指可以用作dict
中的有效键或set
中的值的任何类型。
它不是要求真正的不变性(任何对象都可以define __hash__
),但是一般而言,可散列的事物应该是被“视为不变的”事物,因为它将破坏事物在插入set
后或作为dict
键插入后应该对其进行突变。