我目前正在重写一个程序,我将两个较旧的脚本合并为一个。我重用了大部分代码,也mypy
用于新版本中的类型检查。
总是出现的是一个 mypy 错误,它在尝试从我创建的类中访问属性时具有无效的索引类型attrs
。
# classes.py
@attrs(on_setattr=_validate_dict)
class Config:
defaults = attrib(
default=Factory(dict),
validator=_validate_dict)
target = attrib(
default=Factory(dict),
validator=_validate_dict)
source = attrib(
default=Factory(dict),
validator=_validate_dict)
etl = attrib(
default=Factory(dict),
validator=_validate_dict)
# main.py
config = Config()
data = {
'foo':'bar'
}
config.defaults.update(data)
# can also be
# config.default = data
# or
# setattr(
# self,
# defaults,
# {x: y for (x, y) in data.items()}
# )
a = config.defaults['foo']
b = config.defaults.get('foo')
在这两种情况下,我都会收到以下消息:
Invalid index type "str" for "Dict[_KT, _VT]"; expected type "_KT"
我可以跳过的唯一方法是# type: ingore
在行尾手动添加。要么我没有正确使用课程,要么我监督了一些事情。
那里有人对我有提示吗?提前谢谢。