【问题标题】:How can I initialize an object with a null value in Python?如何在 Python 中使用空值初始化对象?
【发布时间】:2021-03-13 05:49:24
【问题描述】:
class FileCompoundDefinition(AbstractCompoundDefinition):
    # <editor-fold desc="(type declaration)">
    __include_dependency_graph: IncludeDepGraphTagFL
    __inner_namespace: InnerNamespaceTag
    __brief_description: BriefDescription
    __detailed_description: DetailedDescription
    __location: LocationDefinitionCL
    # </editor-fold>

    # <editor-fold desc="(constructor)">
    def __init__(self,
                 id: str,
                 kind: str,
                 language: str,
                 compound_name: str):
        super().__init__(id, kind, compound_name)
        self.__language = language
        self.__includes_list = []
        self.__inner_class_list = []
        self.__include_dependency_graph = None
        self.__inner_namespace = None
        self.__brief_description = None
        self.__detailed_description = None
        self.__location = None
    # </editor-fold>

在上面的源代码中,以下几行显示错误:

self.__include_dependency_graph = None
self.__inner_namespace = None
self.__brief_description = None
self.__detailed_description = None
self.__location = None

如何使用None 值初始化对象?

【问题讨论】:

  • 这些只是警告,因为这些变量具有类型注释,并且它们没有标记为Optional,因此将它们设置为None 是错误的。将注释更改为Optional[&lt;type&gt;],这些警告应该会消失
  • 如果您尝试分配错误类型的值,为什么您认为静态类型检查器不会抱怨?

标签: python python-3.x pycharm nonetype python-typing


【解决方案1】:

使用typing.Optional以下不会引起任何警告。

from typing import Optional

class FileCompoundDefinition(AbstractCompoundDefinition):

    __location: Optional[LocationDefinitionCL]

    def __init__(...)

    self.__location = None
    ...
    self.__location = LocationDefinitionCL()

PEP 484 - Union types

作为Union[T1, None] 的简写,你可以写成Optional[T1];比如上面的等价于:

from typing import Optional

def handle_employee(e: Optional[Employee]) -> None: ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 2020-09-04
    • 2012-05-15
    相关资源
    最近更新 更多