rot*_*oup 2 python type-hinting pycharm
初始化实例变量时,我喜欢包含类型提示。然而,有时我还没有准备好为其分配任何特定值,我希望它以“无”开始。
self._active_cal_fluid: MyObject = None
Run Code Online (Sandbox Code Playgroud)
这导致 PyCharm 给我一个检查错误:
Expected type 'MyObject', got 'None' instead
我无法创建 的“空”版本,MyObject()因为这在我的上下文中没有意义。如果我稍后在其他方法中初始化它,它会抱怨我在init () 之外初始化实例变量,并且类型提示不起作用。
我更愿意启用类型提示。我一般不想禁用此检查,我只想仅当对象初始化为“无”时才消除此特定警告。PyCharm 中可能有这样的事情吗?
bit*_*nox 10
类型注释根本就是错误的。在你的情况下,self._active_cal_fluid可以有两种类型:
键入 MyObject 并键入 None
这可以写成:Union[None, MyObject]或Optional[MyObject]
这是完整的注释
from typing import Optional
...
# definition of MyObject
...
class MyClass(object):
def __init__(self) -> None:
self._active_cal_fluid: Optional[MyObject] = None
Run Code Online (Sandbox Code Playgroud)
如果在类定义时未定义“MyObject”,则需要使用“前向注释”并将类型放入引号中:
from typing import Optional
class MyClass(object):
def __init__(self) -> None:
self._active_cal_fluid: Optional["MyObject"] = None
...
# definition of MyObject
...
Run Code Online (Sandbox Code Playgroud)