在 init 方法中将变量分配为 None 时抑制 PyCharm 警告
Suppress PyCharm warning when a variable is assigned as None in init method
我正在使用 PyCharm 进行 python 编码。在class中,我有几个字段,在实例化class时不会传递其值,但会在稍后设置。因此,在 __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
我正在使用 PyCharm 进行 python 编码。在class中,我有几个字段,在实例化class时不会传递其值,但会在稍后设置。因此,在 __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.
来增强类型声明以包括 Nonefrom 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