如何使Mypy意识到isinstance已经被调用?

时间:2019-07-13 00:01:38

标签: python mypy

有什么方法可以使Mypy意识到我知道要处理的对象是什么类型,而无需在每个if语句中调用mkl_dfti.f90?我想使用辅助函数来执行此类操作,但是即使我的辅助函数中有isinstance,Mypy也会抱怨。我也尝试过使用isinstance来解决这个问题,但是有类似的问题。

typing.Union

1 个答案:

答案 0 :(得分:2)

考虑从此更改您的API:

def is_c(self) -> bool:
    return isinstance(self, C)

对此:

def as_c(self) -> Optional[C]:
    if isinstance(self, C):
        return self
    return None

这将完全避免问题。您可以这样使用它:

c_opt = b_or_c.as_c()
if c_opt is not None:
    print(c_opt.c)