这个名字绝对没有什么神奇之处ih。这只是一个名字。在此特定示例中,该名称未使用,是多余的,可以完全删除。
一个被调用的类被MenuDemo调用,调用的结果,该类的一个实例,存储在 name 中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 =那里至少会消除混乱。