mypy/pyright 不会警告未定义的类属性

问题描述 投票:0回答:1
class A:
    def set_this_or_everything_breaks(self) -> None:
        self.important_variable = "c"

    def run(self) -> None:
        print(f"this is what is important {self.important_variable.lower()}")

a = A()
a.run()

为什么 mypy 不抱怨

self.important_variable
未定义?我怎样才能让它抱怨?如果我删除
set_this_or_everything_breaks
它会抱怨,但它应该抱怨。我可以强制在类上定义所有类属性吗?我希望我会在这里得到一个可能未定义的错误。

python mypy python-typing pyright
1个回答
0
投票

Pyright 确实有一个选项:

reportUninitializedInstanceVariable

为类中未在类主体或

__init__
方法中初始化或声明的实例变量生成或抑制诊断。

即使在严格模式下它也是关闭的,因此您需要显式启用它:

// pyrightconfig.json
{
    "reportUninitializedInstanceVariable": "warning"
}
# pyproject.toml
[tool.pyright]
reportUninitializedInstanceVariable = "warning"
© www.soinside.com 2019 - 2024. All rights reserved.