1

curses について少し学ぼうとして、Python で curses を使用するこの例に出くわしました。最後の数行を除いて、何が起こっているのかをすべて理解しています。

if __name__ == '__main__':
    ih = MenuDemo()

具体的には、その「ih」とは何ですか? また、python プログラムの初期化とどのように関係していますか?

追加の詳細:ih変数の名前を変更しようとしたところ、その名前は動作とは関係がないことがわかりました。これは、これが一般的な python 関連の動作であると私に思わせます。

Python で何かを構築した経験はありますが、本のこのセクションを見逃していたと思います。誰かがここで何が起こっているのか説明できますか?

4

1 に答える 1

8

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

于 2013-06-07T22:53:35.033 に答える