0

完全な初心者プログラマーはこちら。ここ数週間、Zed のLearn Python the Hard Way本を読んでプログラミングの基礎を学んでいますが、行き詰っていることに気づきました。私は多かれ少なかれ、彼が私に投げかけてきたことすべてを追ってきましたが、エクササイズ 43 で気がつくと、ゼッドは私を船外に投げ出したようです。彼は、クラス作成の基本と、それらの変数と関数へのアクセス、およびクラスの継承について概説しました。演習 43 に到達すると、Zed はクラスがどのように相互に作用するかについて、特にreturnを使用して非常に大きな部分を説明するのを忘れたようです。関数 (または、十分に注意を払っていないのは私かもしれません)。次の章をざっと読んだのですが、彼がまったく説明していないようだったので、ここに来ました。

次のコード行で、さまざまな「シーン」がどのように遷移するかを正確に理解したいと思います (要約すると、多くの「綿毛」を取り出しました)。

http://pastebin.com/zhntxFxS

いくつか大きな質問があります: return 関数はクラス内でどのように機能しますか?

戻り関数は CentralCorridor() クラス (または Map() および Engine() クラス) で何をしますか?

Map() クラスと Engine() クラスはどのように相互に連携してシーンを変更しますか?

少し関連性が低い: Zed の本の次のいくつかの章は、初心者の私にとって有益でしょうか、それともここで苦労している場合は、他の場所で Python のヘルプを探す必要がありますか?

4

3 に答える 3

0

returnステートメントは必ずしもクラスで使用されているわけではありませんが、より具体的には、たまたまクラスにある関数で使用されています。したがって、クラスで関数を呼び出すと、それが返されます。通常の機能と何ら変わりはありません。

Map()クラスで使用するクラスのインスタンスを作成しますEngine()playの関数にが表示されている場合はEngine、 が呼び出されますが、これはクラスopening_scene()に限定されているようです。Map()のインスタンスをMapto に渡したのはそのためですEngine

少し前に LPTHW をやったので、後の章は覚えていません。あるチュートリアルから学んでいないと感じた場合は、おそらく別のチュートリアルを試してみてください (Codecademy はクラスを教えるのが得意ではなかったので、実際に Codecademy から LPTHW に行きました (または、私だけだったのかもしれません :p))。

于 2013-07-18T22:15:27.703 に答える
0

Pastebin のコードではreturn、クラス内で直接ではなく、クラスのメソッド内で使用しています。メソッド (オブジェクトに関連付けられた単なる関数)returnでは、通常の関数と同じように機能します。データの一部 (または何も) が呼び出されたものに返され、呼び出し元に制御が返されるため、呼び出し元のコード進むことができます。

Map オブジェクトは、さまざまなシーン オブジェクトを管理しnext_scene、名前を指定してシーン オブジェクトを取得するために使用できるメソッドを提供します。がnext_scene呼び出されると、渡された文字列が という辞書のキーとして使用されscenesます。の値はscenes、さまざまなシーンを表すオブジェクトです。ディクショナリで正しいシーン オブジェクトが見つかったら、それをMap返します。

Engine クラスには注目すべきメソッドが 1 つありplayます。enter_sceneこれは本質的に無限ループであり、各パスで Map オブジェクトを使用してシーンを取得し、シーンが提供するものを呼び出しますMap。シーンには次のシーンを識別する文字列があり、それを取得したり、入力したりします。このループはシーンDeathに入るまで続き、その時点で exit の呼び出しによってプログラムが終了します。

これが何らかの意味を持っていることを願っています.Pythonを楽しんでください!

于 2013-07-18T22:22:00.643 に答える
0

は、クラスまたは returnという名前のメソッドの一部です。したがって、このメソッドは、呼び出されたときに条件が満たされた場合に値を返すだけです。enterCentralCorridorDeath

>>> corridor = CentralCorridor(scene_map)
>>> result = corridor.enter() # Here the program waits for you to write something
>tell a joke
>>> print result
laser_weapon_armory

playこのメカニズムは、Engineクラスのメソッドによって内部的に使用されます。

マップの変更は、プログラムがユーザーに値の入力を求めたときにユーザーが行います ( raw_input)。次のマップの名前は、値と現在のマップによって異なります。たとえば、マップが中央回廊の場合、マップを変更するために使用できる値はdodgetell a jokeです。それ以外の答えは、あなたを廊下に残します。

于 2013-07-18T22:24:29.753 に答える