动态分配变量时,mypy 类型检查显示错误
mypy type checking shows error when a variable gets dynamically allocated
我有一个 class 接受 Spark DataFrame
并对其进行一些处理。这是代码:
for column in self.sdf.columns:
if column not in self.__columns:
row = [column]
row += '--' * 9
column_table.append(row)
我的 class:
的构造函数中有这段代码
self.sdf: Optional[SparkDataFrame] = None
这里sdf
是在执行我的class时动态设置的,然后上面提到的for循环会运行。 __columns
是一个字典,应该包含 sdf 的所有列。 运行 时我发现代码没有错误。但是当我用 mypy
输入检查我的代码时,它在 for 循环的第一行显示错误:
error: Item "None" of "Optional[Any]" has no attribute "columns"
我了解到最初的 sdf 将是 None
。但我应该认为这是一个严重的错误吗?对此有任何解决方法吗?
是的,columns
特定于数据框。您可以找到更多信息 here。当您将 self.sdf 设置为 None 时,您将收到您发布的错误。你也可以试试这个。
from pyspark.sql import DataFrame
if self.sdf is not None and isinstance(self.sdf,DataFrame):
for column in self.sdf.columns:
if column not in self.__columns:
row = [column]
row += '--' * 9
column_table.append(row)
我有一个 class 接受 Spark DataFrame
并对其进行一些处理。这是代码:
for column in self.sdf.columns:
if column not in self.__columns:
row = [column]
row += '--' * 9
column_table.append(row)
我的 class:
的构造函数中有这段代码self.sdf: Optional[SparkDataFrame] = None
这里sdf
是在执行我的class时动态设置的,然后上面提到的for循环会运行。 __columns
是一个字典,应该包含 sdf 的所有列。 运行 时我发现代码没有错误。但是当我用 mypy
输入检查我的代码时,它在 for 循环的第一行显示错误:
error: Item "None" of "Optional[Any]" has no attribute "columns"
我了解到最初的 sdf 将是 None
。但我应该认为这是一个严重的错误吗?对此有任何解决方法吗?
是的,columns
特定于数据框。您可以找到更多信息 here。当您将 self.sdf 设置为 None 时,您将收到您发布的错误。你也可以试试这个。
from pyspark.sql import DataFrame
if self.sdf is not None and isinstance(self.sdf,DataFrame):
for column in self.sdf.columns:
if column not in self.__columns:
row = [column]
row += '--' * 9
column_table.append(row)