在尝试学习一点关于诅咒的知识时,我遇到了this example of using curses in python. I理解所有发生了什么,除了最后几行:
if __name__ == '__main__':
ih = MenuDemo()具体地说,什么是"ih“,它与python程序初始化有什么关系?
一些额外的细节:我只是尝试重命名ih变量,我发现它的名称与行为无关。这导致我认为这是与python相关的一般行为。
虽然我确实有一些使用python构建东西的经验,但我想我错过了本书的这一部分。有人能解释一下这是怎么回事吗?
发布于 2013-06-08 06:53:35
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 =至少会消除混乱。
https://stackoverflow.com/questions/16994088
复制相似问题