在init方法中将变量分配为None时,禁止PyCharm警告

时间:2019-10-27 14:38:35

标签: python autocomplete pycharm

我正在使用PyCharm进行python编码。在一个类中,我只有几个字段,这些字段的值在实例化该类时不会传递,但将在以后设置。因此,在__init__()方法中,我将其值设置为None。另外,要利用PyCharm自动代码完成功能,我要指定这些字段的数据类型。

class SelectFrame():
    index_data: pandas.DataFrame
    index_filepath: Path

    def __init__(self):
        self.index_data = None
        self.index_filepath = None

但是,与此同时,PyCharm发出了警告Expected Type 'DataFrame', got 'None' instead。如何删除此警告?

注意:我不想完全禁止TypeChecker警告,也不想在使用此类代码的任何地方都放置注释# noinspection PyTypeChecker。我的问题是
无初始化正确吗?还是有更好的方法初始化和避免警告?

1 个答案:

答案 0 :(得分:4)

无初始化是正确的(除非您在构造过程中知道它),但是您将index_data声明为pandas.DataFrame,并且 None不是pandas.DataFrame ,因此它会警告您。

您应该使用 Optional 来增强类型声明,使其也包含None。

from typing import Optional

class SelectFrame():
    index_data: Optional[pandas.DataFrame]
    index_filepath: Optional[Path]

    def __init__(self):
        self.index_data = None
        self.index_filepath = None