我刚刚开始使用类型注释,并在Python中使用curses
模块遇到了一个问题。更具体地说,curses.wrapper(func)
期望函数func
作为参数,并将主窗口(也称为“ stdscr”)作为参数。但是,我不确定如何注释这种功能。例如
from curses import wrapper
def interactive_shell_curses(stdscr: _curses.window) -> None:
即使print(type(stdscr))
打印<class '_curses.window'>
,也会产生错误“未定义名称'_curses'”。在_curses.window
文件中找到了_curses.pyi
。但是,我不确定如何导入它,甚至不确定。另外,我不确定这里的最佳实践是否实际上是避免注释interactive_shell_curses
。
请咨询如何处理此案!
答案 0 :(得分:2)
Python curses
模块只是curses
库的包装。特别是,这意味着您将无法出于键入目的访问窗口对象(_curses.window
仅在调用initscr()
之后才可用,即使这样做,也将毫无用处,因为库本身不提供类型提示。
另一方面,您不能仅从_CursesWindow
的{{1}}导入typeshed
类型的提示,因为它不是在运行时定义的。这就是TYPE_CHECKING
常量可以提供帮助的地方。如果_curses.pyi
为TYPE_CHECKING
,则您处于类型检查模式,并从存根导入类型提示。否则,您将使用不关心类型提示的解释器运行代码,例如使用True
类型。示例:
Any