どのように動作するか説明しようとします。
まず、これが実行されます。
a_game = Game("central_corridor")
これはGame.__init__("central_corridor")
を呼び出します。
__init__メソッドでは、self.start
は値 "central_corridor"をとります。
その後、本体に戻ります。ここまでで、a_game
という変数があります。この変数など、実際にはクラスGame
のインスタンスであり、それはa_game.start
のようないくつかの特性を有する、a_game.quips
、a_game.death()
次に、これが実行されます。
a_game.play()
a_game
にplay()
メソッドを呼び出すこと。 Game
ではなく、a_game
にあります。したがって、メソッドが実行されているときには、self
という単語(通常の引数のように扱われます)を介して、すべてのプロパティa_game
にアクセスします。
これは
next = self.start
self.start
が__init__()
で定義された次の実行、および "central_corridor" に等しいです。だから、next
は "central_corridor"です。
while True:
ループに入り、いくつかのハイフンを印刷し、getattr()
を呼び出します。
getattr()
は少なくとも2つの引数をとります。最初のものは、オブジェクトのインスタンスであり、この場合はself
であり、2番目のものは、そのインスタンスの属性ののの名前です。この場合"central_corridor"
。
getattrは "central_corridor"というselfの属性を探し、それを見つけて返します。今、room
はself.central_corridor
に等しいです。
次に、next = room()
が実行されます。部屋は現在self.central_corridor
に等しいので、
next = self.central_corridor()
が実際に実行されます。
self.central_corridor()
は、 "death"、 "laser_weapon_armory"または "central_corridor"のいずれかを返すことができます。 "laser_weapon_armory"を返すとしましょう。今next
は "laser_weapon_armory"です。私たちはループの始めに戻ります。ハイフンをもう一度印刷し、 "laser_weapon_armory"という名前の自己の属性を取得します。この属性はself.laser_weapon_armory
になります。
self.laser_weapon_armory
は、 "the_bridge"または "death"を返すことができます。今回は「死」を返すとしましょう。今next
は「死」です。私たちはループの始めに戻り、いくつかのハイフンを印刷してself.death
にして実行します。
すべてself.death
は、self.quipsのランダムな文字列を印刷し、次にexit(1)
を出力します。 sys
モジュールからのexit
機能は、それだけです。プログラムを終了します。
それはかなりです。私はこれが助けて欲しい
幸運を祈るPythonの難しい方法!
あなたは本当に難しい方法でPythonを学んでいます。 ;-)公式の[チュートリアル](http://docs.python.org/tutorial/)を使用することをお勧めします。 – Keith
@Keith私は同意しない。難しいのは簡単です;)。 –