我有一个 python 类,如下所示:
from typing import Optional, Union, Dict
import numpy as np
class TestClass():
def __init__(self, a: Optional[float] = None, b: Optional[float] = None):
self.a = 1 if a is None else a
self.b = b
@property
def input_values(self) -> Dict[str, Union[float, None]]:
return {'a': self.a, 'b': self.b}
@property
def test_property(self) -> float:
if None in self.input_values.values():
raise KeyError('missing values')
return self.a+self.b
使用 mypy 对其进行评估会返回错误语句
error: Unsupported operand types for + ("float" and "None")
note: Right operand is of type "Optional[float]"
但我确保在控制流的这一点上两个值都不能为 None 。 mypy 是否可以通过不同的方式来执行这些类型检查?
mypy 中类型的缩小非常有限,允许的方法之一是断言,这在 mypy 中有效:
def test_property(self) -> float:
if None in self.input_values.values():
raise KeyError('missing values')
assert isinstance(self.a, float) and isinstance(self.b, float)
return self.a + self.b
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)