python - 在 init 方法中将变量分配为 None 时抑制 PyCharm 警告

标签 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。我的问题是
None 初始化是否正确?或者有没有更好的方法来初始化和避免警告?

最佳答案

None 初始化是正确的(除非您在构建过程中知道它)但是您将 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

关于python - 在 init 方法中将变量分配为 None 时抑制 PyCharm 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58580357/

相关文章:

python - 将列表列表转换为 numpy 数组

python - 将 np.int8 数组与 127 相乘会根据平台产生不同的 numpy 数组类型

html - 在不禁用自动完成的情况下禁用 Chrome 中的表单自动填充

pycharm - 如何定义 PyCharm 让 anaconda 作为解释器?

python - 如何将输出重定向到客户端

javascript - 为什么我的自动完成功能不起作用?

jquery - 需要像 functionailty 这样的 gmail - jquery 自动完成以包含姓名和电子邮件地址 - 在字符串搜索中

pycharm - pycharm-我如何在整个项目中找到替换单词?

python - 如何修复我的 pygame 项目中 Python 二进制文件中的编码错误?

python - 我的 Postgres 查询如何执行得更快?我可以使用 Python 来提供更快的迭代吗?