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(self) 函数的,只需在前一个函数中返回“piez”。过去我只是通过用 () 输入函数的名称来跳转函数,但是这样我会返回一个字符串并且不确定我是如何跳转的。

这是我的观察:

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() 。突然跳到房间(自己)

7.) 我们到达 rooom(self) 并返回“piez”

8.) ?? Piez 被返回某个地方......我们现在在piez(self)

有人可以帮我填补空白吗?这让我疯狂。我希望我说得通……我一直在努力理解这一点一个小时,即使在分解它之后,我似乎也误解了一些东西。

4

1 回答 1

3

您在这里有轻微的困惑:

5.) 循环开始。从 next_room_name 中获取下一个函数并分配给房间

6.) next_room_name 分配给 room() 。突然跳到房间(自己)

如果等号存在,则任何语句的返回值都分配给等号的左侧。

当你写

x = hello()

这表示:

“打招呼并将任何返回值存储在x

所以应该是

"被调用的函数的返回值room()存储在next_room_name"

希望这可以为您澄清。

于 2012-08-07T01:26:14.617 回答