使用下面的 python 文件,我无法解决 mypy 错误。
import openpyxl
inputWorkbook = openpyxl.load_workbook("input.xlsx")
activeSheet = inputWorkbook.active
if activeSheet:
print(activeSheet.max_row)
我不断收到此错误
test.py:6: error: "_WorkbookChild" has no attribute "max_row" [attr-defined]
。查看文档我不明白问题是什么。 openpyxl.workbook.workbook().active 返回类型 openpyxl.worksheet.worksheet.Worksheet 其中包括 max_row.
openpyxl.workbook.workbook.Workbook.active
属性被输入为返回 openpyxl.workbook.child._WorkbookChild
并且 max_row attribute
不存在于 _WorkbookChild
中,这是由于静态类型检查所致。
添加
type: ignore
评论,应该可以解决警告问题。
import openpyxl
inputWorkbook = openpyxl.load_workbook("input.xlsx")
activeSheet = inputWorkbook.active
if activeSheet:
print(activeSheet.max_row) # type: ignore
这是由于 内置类型 造成的,它与实际实现略有不同(不太清楚为什么,如果其他人可以阐明的话)。一些选项是:
cast
模块中的 typing
: import openpyxl
from openpyxl.worksheet.worksheet import Worksheet
from typing import cast
inputWorkbook = openpyxl.load_workbook("input.xlsx")
activeSheet = cast( Worksheet, inputWorkbook.active )
if activeSheet:
print(activeSheet.max_row)