在尝试学习一些有关诅咒的知识时,我碰到了this example of using curses in python.我了解所有发生的事情,除了最后几行:
if __name__ == '__main__':
ih = MenuDemo()
具体来说,“ ih”是什么?它与python程序的初始化有何关系?
其他一些细节:我只是尝试重命名
ih
变量,但发现它的名称与行为无关。这使我假设这是与python相关的常规行为。尽管我确实有使用python构建事物的经验,但我想我还是错过了本书的这一部分。有人可以解释这是怎么回事吗?
最佳答案
名称ih
绝对没有魔力。这只是一个名字。在此特定示例中,该名称未使用,多余并且可以完全删除。
调用了一个名为MenuDemo
的类,该调用的结果(该类的实例)存储在名称ih
中。否则可能不是因为实例化该类会触发无限循环这一事实。
创建实例意味着将调用类.__init__()
方法,该方法将执行以下操作:
def __init__(self):
self.screen = curses.initscr()
curses.noecho()
curses.cbreak()
self.screen.keypad(1)
self.screen.border(0)
self.topLineNum = 0
self.highlightLineNum = 0
self.markedLineNums = []
self.getOutputLines()
self.run()
因此,此实例将创建一个Curses屏幕,更改一些设置,设置一些实例属性,并调用该实例上的方法
.getOutputLines()
和.run()
。.run()
方法可以完成所有工作,并且循环不断。它从不返回(相反,它在某个时刻调用self.exit()
,实际上并不存在,因此会引发异常)。结果,
__init__()
方法从不返回任何一个,因此MenuDemo()
调用也从不返回,并且没有任何内容分配给ih
。您可以完全删除
ih =
部分,而不更改代码的功能:if __name__ == '__main__':
MenuDemo()
没有
ih =
至少会消除混乱。关于python - 在此python程序的初始化中,此神奇的“ih”变量是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16994088/