Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“这是什么魔法?”;ih";这个python程序的初始化中的变量?_Python_Initialization - Fatal编程技术网

“这是什么魔法?”;ih";这个python程序的初始化中的变量?

“这是什么魔法?”;ih";这个python程序的初始化中的变量?,python,initialization,Python,Initialization,在尝试学习一些关于诅咒的知识时,我无意中发现我了解所有发生的事情,除了最后几行: if __name__ == '__main__': ih = MenuDemo() 具体来说,“ih”是什么?它与python程序的初始化有什么关系 一些额外的细节:我只是尝试重命名ih变量,我发现它的名称与行为无关。这导致我假设这是与python相关的一般行为 虽然我确实有一些使用python构建东西的经验,但我想我错过了本书的这一部分。有人能解释一下这里发生了什么吗?名字ih绝对没有什么神奇之处。这

在尝试学习一些关于诅咒的知识时,我无意中发现我了解所有发生的事情,除了最后几行:

if __name__ == '__main__':
    ih = MenuDemo()
具体来说,“ih”是什么?它与python程序的初始化有什么关系

一些额外的细节:我只是尝试重命名
ih
变量,我发现它的名称与行为无关。这导致我假设这是与python相关的一般行为

虽然我确实有一些使用python构建东西的经验,但我想我错过了本书的这一部分。有人能解释一下这里发生了什么吗?

名字
ih
绝对没有什么神奇之处。这只是一个名字。在这个特定的示例中,该名称没有使用,是多余的,可以完全删除

调用名为
MenuDemo
的类,该调用的结果(该类的实例)存储在名称
ih
中。或者,如果不是因为实例化该类会触发无限循环这一事实,情况也会如此

创建实例意味着调用类
。\uuuu init\uuuu()
方法,该方法执行以下操作:

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()
,该点实际上并不存在,因此会引发异常)

因此,
\uuu init\uuu()
方法也不会返回,因此
MenuDemo()
调用也不会返回,也不会为
ih
分配任何内容

您可以完全删除
ih=
部分,而不更改代码的功能:

if __name__ == '__main__':
    MenuDemo()
没有
ih=
至少可以消除混淆。

名字
ih
绝对没有什么神奇之处。这只是一个名字。在这个特定的示例中,该名称没有使用,是多余的,可以完全删除

调用名为
MenuDemo
的类,该调用的结果(该类的实例)存储在名称
ih
中。或者,如果不是因为实例化该类会触发无限循环这一事实,情况也会如此

创建实例意味着调用类
。\uuuu init\uuuu()
方法,该方法执行以下操作:

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()
,该点实际上并不存在,因此会引发异常)

因此,
\uuu init\uuu()
方法也不会返回,因此
MenuDemo()
调用也不会返回,也不会为
ih
分配任何内容

您可以完全删除
ih=
部分,而不更改代码的功能:

if __name__ == '__main__':
    MenuDemo()
没有
ih=
至少可以消除混淆