1

クラスについて学び、コードを機能させることができましたが、戻り値はどこに行くのでしょうか。

コード:

from sys import exit
from random import randint

class Game(object):

    def __init__(self, start):
        self.pie = [ 'pie test']

        self.start = start

    def play(self):
        next_room_name = self.start
        while True:
            print "\n--------"
            room = getattr(self, next_room_name)
            next_room_name = room()

    def rooom(self):
        print "Test worked. good job"
        return "piez"

    def piez(self):
        print "pie room"
        exit(1)


a_game = Game("rooom")
a_game.play()

たとえば、上記のコードでは、rooom()で「piez」を返し、piez(self)関数に移動します。しかし、戻り値は私をそこに連れて行くためにどこに行きましたか?

クラスの外で「piez」を返し、新しい値でクラスに再入力しましたか?文字列"piez"をinit(self、start)に返しましたか?値を前の関数play(self)に戻しましたか?

それ以外はすべて正常に動作していますが、前の関数で「piez」を返すだけで、どのようにしてpiez(self)関数に到達したのかわかりません。以前は、名前を()で入力するだけで関数を飛び回っていましたが、この方法では文字列が返され、どのように飛び回っているのかわかりません。

これが私の観察です:

1.)クラスGame( "Rooom")をa_gameにインスタンス化します

2.)a_gameからplay()関数を呼び出します

3。)「Rooom」がinitに送信され、self.startに割り当てられます

4.)play(self)が開始し、初期化された関数self.startを使用して、next_room_nameに設定します

5.)ループが開始します。次の関数はnext_room_nameから取得され、部屋に割り当てられます

6.)next_room_nameはroom()に割り当てられます。いきなりrooom(self)にジャンプ

7.)rooom(self)に到着し、「piez」を返します

8.)?? ピエズはどこかに返されます...そして私たちは今ピエズ(自己)にいます

誰かが私がギャップを埋めるのを手伝ってもらえますか?それは私を夢中にさせています。私は理にかなっていると思います...私は今1時間これを綿密に理解しようとしています、そしてそれを分解した後でも私は何かを誤解しているようです。

4

1 に答える 1

3

ここで少し混乱しています:

5.)ループが開始します。次の関数はnext_room_nameから取得され、部屋に割り当てられます

6.)next_room_nameはroom()に割り当てられます。いきなりrooom(self)にジャンプ

等号が存在する場合、ステートメントの戻り値は等号の左側に割り当てられます。

あなたが書くとき

x = hello()

これの意味は:

「helloを呼び出して、戻り値をxに格納します」

だからそれは

"によって呼び出された関数の戻り値は"room()に格納されますnext_room_name

うまくいけば、これはあなたのためにそれを明らかにします。

于 2012-08-07T01:26:14.617 に答える