Python Mypy是否忽略构造函数?

Python Mypy是否忽略构造函数?,python,types,mypy,Python,Types,Mypy,当我意外地将变量更改为其他数据类型时,我想使用Mypy来警告我。 但是Mypy似乎忽略了在我的测试类的\uuuu init\uuuuu中发生的任何事情。 它还忽略对象属性对不同数据类型的更改 最小复制器: class Foo: blah: int def __init__(self): self.blah = 'asdf' 这段代码的Mypy 我遗漏了什么吗?mypy忽略任何没有类型注释的def语句的主体。注释任何参数或使用原因mypy检查\uuuu init\

当我意外地将变量更改为其他数据类型时,我想使用Mypy来警告我。 但是Mypy似乎忽略了在我的测试类的
\uuuu init\uuuuu
中发生的任何事情。 它还忽略对象属性对不同数据类型的更改

最小复制器:

class Foo:
    blah: int
    def __init__(self):
        self.blah = 'asdf'
这段代码的Mypy


我遗漏了什么吗?

mypy
忽略任何没有类型注释的
def
语句的主体。注释任何参数或使用原因
mypy
检查
\uuuu init\uuuu
并拒绝不正确的分配

class Foo:
    blah: int
    blub: int

    # annotated parameter `blub` and/or return `->` trigger inspection
    def __init__(self, blub: int = 42) -> None:
        self.blah = 'asdf'  # error: Incompatible types in assignment (expression has type "str", variable has type "int")
        self.blub = blub

非常感谢你。它终于按我希望的方式工作了。:)只是一个简短的后续问题:init之外的“blah:int”是否不关心blah是实例、类还是静态attribtue?默认情况下,类范围中的注释指示实例变量。类属性必须在类范围内注释为
blah:ClassVar[int]