[英]Python Type hinting with curses
我试图弄清楚在这个函数的顶部放入我的类型注释的内容。
我有以下简单的例子:
import curses
def main(stdscr):
stdscr.clear()
stdscr.addstr(2, 0, "What is the type of stdscr?")
stdscr.addstr(5, 0, "It is: {}".format(type(stdscr)))
stdscr.refresh()
stdscr.getkey()
curses.wrapper(main)
这将返回<type '_curses.curses window'>
。 这似乎不适用于类型提示,因为它有一个空格。
预期的结果将是
WindowObject
列出
的
WindowObject
。
我在curses模块本身找不到WindowObject的路径。
编辑:这里的文档不正确。
如何使用准确的类型注释编写main?
不幸的是,curses模块似乎没有在typeshed中完全输入。 几个月前已完成一些初步工作 ,但Windows对象尚未添加。 你可以在这里和这里检查Python 3'curses'存根。
目前,存根默认键入curses.wrapper
:
def wrapper(func, *args, **kwds): ...
......反过来,相当于:
def wrapper(func: Callable[..., Any], *args: Any, **kwds: Any): ...
因此,这意味着除了Any
之外,目前还没有合适的类型分配给main
函数的参数。
也就是说,如果你想要它,你可能会贡献一些存根来自己完成curses
模块! 看起来Window对象看起来并不那么复杂,并且希望打字相对简单。
如果curses模块本身不存在,那么主要的复杂因素可能是确定应该从哪里导入'Window'对象。 您可能想要在typing
模块本身中粘贴“Windows”对象,就像在typing
typing.re.Pattern
和typing.re.Match
。
你的问题是你的类型不是对象的真实类型,方法类型()总是正确地告诉你类型,所以确定文档。 是错的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.