我读了一些书,但无法像我想的那样完全理解这一点。我正在从 LPTHW 教程中制作一个“选择你自己的冒险”小游戏,这是完整的脚本:http://codepad.org/YWVUlHnU http://codepad.org/YWVUlHnU
我不明白的是以下内容:
class Game(object):
def __init__(self, start):
self.quips = [
"You died. Please try again.",
"You lost, better luck next time.",
"Things didn't work out well. You'll need to start over."
"You might need to improve your skills. Try again."
]
self.start = start
我知道我们正在创建一个类,但为什么要定义__init__
?后来我做了类似的事情print self.quis[randint(0, len(self.quips)-1)]
打印四个字符串之一quips
,但为什么我不创建一个名为quips
或者其他的东西?
你打电话时Game("central_corridor")
,一个新对象被创建并且Game.__init__()
使用该新对象作为第一个参数调用方法(self
) and "central_corridor"
作为第二个参数。自从你写了a_game = Game(...)
,您已分配a_game
来引用那个新对象。
这张图可能会让这个过程更容易理解:
注:__new__
方法是Python提供的。它创建作为第一个参数给出的类的新对象。内置的__new__
方法不会对其余参数执行任何操作。如果需要,您可以覆盖__new__
方法并利用其他参数。
实际原因__init__()
存在于您的程序中设置start
属性上的Game
您创建的实例(您调用的实例)a_game
),这样第一次调用a_game.play()
从您想要的位置开始。
你说得对quips
。没有理由拥有quips
设立于__init__()
。您可以将其设为类属性:
class Game(object):
quips = ["You died. Please try again.",
"You lost, better luck next time.",
"Things didn't work out well. You'll need to start over."
"You might need to improve your skills. Try again." ]
def __init__(self, start):
self.start = start
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)