我正在用python写一些带有类型注释的代码。我对Optional类型有疑问。例如,对于这样的代码:
maybe_number : Optional[int] = ... # definition
if maybe_number == None:
...
else:
# I know its int because i checked, but it is a typechecking error
number : int = maybe_number
...
我收到错误消息:
Incompatible types in assignment (expression has type "Optional[int]", variable has type "int")
如何在python中表达我知道在某些分支中使用Union或Optional类型的值的实际类型。我需要以特定方式检查类型吗?
答案 0 :(得分:0)
平等实际上并不能告诉您有关对象类型的太多信息,因为两个对象可以具有__eq__
方法,这些方法可以使它们相等但具有不同的甚至不相关的类型。您可以使用身份比较来检查maybe_number
是否值为None
:
if maybe_number is None:
...
else:
number : int = maybe_number