我不完全理解课程。我已经阅读了 python 文档和其他几个教程。我明白了它的基本要点,但不明白其中的细微差别。例如在我的代码中:
class whiteroom():
""" Pick a door: red, blue, green, or black. """
do = raw_input("> ")
if "red" in do:
print "You entered the red room."
elif "blue" in do:
print "You entered the blue room."
elif "green" in do:
print "You entered the green room."
elif "black" in do:
print "You entered the black room."
else:
print "You sit patiently but slowly begin to stave. You're running out of time."
return whiteroom()
game = whiteroom()
game
(原版 键盘)
我想返回类 whiteroom。这是不可能的,或者没有正确完成。如果你能弄清楚如何返回一个类或如何将两个类“链接”在一起,以便 whiteroom 在 else 上重复,而其他房间(将是类)在调用时返回,那将是很棒的。
此外,我对 __init__
超级不稳定,我仍然不确定它的目的是什么。每个人都一直告诉我它“初始化”,我确信它确实如此,但这似乎并没有帮助我的大脑。
原文由 Colton Allen 发布,翻译遵循 CC BY-SA 4.0 许可协议
函数与类非常不同。看起来您采用了一个函数,只是将
def
更改为class
。我想这 主要 适用于您的情况,但这不是课程应该进行的方式。类包含函数(方法)和数据。例如,你有一个球:
现在我们有一个
Ball
类。我们如何使用它?它看起来不是很有用。数据是有用的地方:
好吧,很酷,但是与全局变量相比有什么优势呢?如果您有另一个
Ball
实例,它将保持独立:并且
ball1
保持独立:现在我们定义的那个
bounce
方法(类中的函数)怎么样?bounce
方法导致它修改velocity
数据本身。同样,ball1
没有被触及:应用
一个球很整洁,但大多数人并没有模拟它。你在做游戏。让我们想想我们拥有什么样的东西:
那我们开个房间吧。房间有名字,所以我们将有一些数据来存储:
让我们创建一个实例:
漂亮。但是,如果您希望不同的房间具有不同的功能,那么这并不是那么有用,所以让我们创建一个 _子类_。 子类 继承其 超类 的所有功能,但您可以添加更多功能或覆盖超类的功能。
让我们考虑一下我们想对房间做什么:
我们该怎么做?
它的响应方式取决于房间,所以让房间使用名为
interact
的方法来处理:现在让我们尝试与它交互:
您的原始示例以在房间之间移动为特色。让我们使用一个名为
current_room
的全局变量来跟踪我们所在的房间。 1让我们也创建一个红色房间。1. 这里除了全局变量还有更好的选择,但为了简单起见,我将使用一个。
现在让我们试试看:
读者练习: 将代码添加到
WhiteRoom
的interact
让你回到红色房间。现在我们已经完成了所有工作,让我们把它们放在一起。有了我们新的
name
所有房间的数据,我们还可以在提示中显示当前房间!您可能还想制作一个重置游戏的功能:
将所有类定义和这些函数放入一个文件中,您可以像这样在提示符下播放它(假设它们在
mygame.py
中):为了能够仅通过运行 Python 脚本来玩游戏,您可以在底部添加:
这是对类的基本介绍以及如何将其应用到您的情况。