当一个变量被动态分配时,mypy类型检查显示错误

问题描述 投票:0回答:1

我有一个班级,需要一个 Spark DataFrame 并对其做一些处理。下面是代码。

    for column in self.sdf.columns:
        if column not in self.__columns:
            row = [column]
            row += '--' * 9
            column_table.append(row)

我在我的类的构造函数里有这段代码。

self.sdf: Optional[SparkDataFrame] = None

这里 sdf 是在执行我的类时动态设置的,然后上面提到的for循环就会运行。__columns 是一个字典,里面应该有sdf的所有列。当它运行时,我发现代码中没有错误。但是当我用 mypy在for循环的第一行就出现了错误。

error: Item "None" of "Optional[Any]" has no attribute "columns"

我知道最初的sdf将是 None. 但我是否应该认为这是一个严重的错误?有什么变通的办法吗?

pyspark python-3.7 mypy
1个回答
1
投票

是的。columns 你可以找到更多的信息。此处 .当你设置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)
© www.soinside.com 2019 - 2024. All rights reserved.