当一个类中的函数返回一个值时,它返回到哪里?

时间:2012-08-07 01:18:51

标签: python class python-2.7 return

我一直在学习类,我得到了我的代码,但我只是想知道返回值在哪里?

代码:

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)?我只是将值返回到上一个函数,播放(自我)吗?

除此之外,一切都运行正常,但我只是不明白我是如何到达piez(self)函数的,只需在前一个函数中返回“piez”即可。在过去,我只是通过用()键入它的名称来跳转函数,但是这样我回复了一个字符串而不确定我是如何跳转的。

这是我的观察:

1。)将类游戏(“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(自己)并返回“piez”

8。)?? Piez回到某个地方......我们现在在piez(自我)

有人可以帮我填补空白吗?这让我疯狂。我希望我有意义......我一直在密切地试图理解这一点一小时,即使在打破它之后我似乎也误解了一些东西。

1 个答案:

答案 0 :(得分:3)

你有点混淆:

  

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

     

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

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

写作时

x = hello()

这意味着:

“调用hello并将任何返回值存储在 x

所以它应该是

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

希望这能为你澄清。