名前に魔法はまったくありません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 =は、少なくとも混乱を取り除くでしょう。