Python curses:模块函数与实例函数

Python curses: module function vs instance function

我最近一直在研究 Curses 在 Python 中的工作原理。我已经按照这里的教程进行操作:Curses Programming with Python,并且我已经成功地弄乱了他们的代码以正确地将文本输出到控制台屏幕中的不同位置。

我的问题是: 为什么模块的某些功能属性,例如curses.noecho() 但其他功能是屏幕对象的属性,例如sreen_instance.keypad(True)?

让屏幕实例指定 noecho()cbreak() 之类的东西而不是模块对我来说很有意义。

这背后的原因是什么?是否有任何通用规则来识别函数应该是模块的属性,还是 Curses 库中对象实例的属性?

尽管名字"stdscr"和"standard screen"一样,那是一个诅咒window(如果有 subwindows).

,它是顶级 window

属性位于 curses 级别或 window 级别,因为相应的函数是这样组织的诅咒。大多数 Python 绑定与 C 库具有相同的名称和相似的参数(允许 Python 绑定中的可选参数减少使用的名称数量,例如,对于 addstr in Python versus waddstr C).

要了解它是如何工作的,我只需查看 curses C 接口:任何使用 WINDOW* 参数的东西(计算别名,例如 getch() as wgetch(stdscr)) 将在 Python 绑定中实现为 window 属性(或函数),而那些不使用WINDOW 参数将是 curses 属性(或函数)。