设置示例:
from typing import Optional
class A(object):
def __init__(self):
self.a: Optional[int] = None
def check_a(self) -> bool:
return self.a is not None
a = A()
if a.check_a():
print(a.a + 1) # error: Unsupported operand types for + ("None" and "int")
Run Code Online (Sandbox Code Playgroud)
该check_a方法检查变量的类型a,但mypy没有看到这一点并写入错误。TypeGuard不会有帮助,因为它可以创建一个函数来检查类型,而不是一个函数来检查对象变量的类型
是否有可能以某种方式让 mypy 注意到这一点,以便使用该函数检查变量的类型,self.a而无需在检查中显式引用它?(使用if a.a_check而不是if a.a is not None)?