gpt4 book ai didi

Python 诅咒 : module function vs instance function

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:43 31 4
gpt4 key购买 nike

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

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

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

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

最佳答案

尽管名称“stdscr”是“standard screen”,但它是一个 curses window(而且它是顶层窗口如果有子窗口)。

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

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

关于Python 诅咒 : module function vs instance function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45553143/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com