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