如何解决预期的类型为“ MyObject”,而在__init__中使用类型提示代替了“无”
初始化实例变量时,我喜欢包含类型提示。但是,有时我不准备为其分配任何特定的值,我希望它以“无”开头。
self._active_cal_fluid: MyObject = None
这导致PyCharm给我一个检查错误:
Expected type 'MyObject',got 'None' instead
我无法创建MyObject()
的“空”版本,因为在我的上下文中这没有意义。
如果我稍后再等待以其他方法对其进行初始化,它会抱怨我在 init ()之外初始化了一个实例变量,而typehints不起作用。
我希望保持启用提示类型。 通常,我不想禁用此检查,只想在对象初始化为“无”时仅仅摆脱此警告。在PyCharm中有这种可能吗?
解决方法
类型注释根本是错误的。
就您而言,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
如果在类定义时未定义“ MyObject”,则需要使用“ forward Annotation”并将类型放在引号中。
from typing import Optional
class MyClass(object):
def __init__(self) -> None:
self._active_cal_fluid: Optional["MyObject"] = None
...
# definition of MyObject
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。