I've done some reading and can't grasp this as fully as I'd like to. I'm making a little "choose your own adventure" game from the LPTHW tutorial, here's the full script: http://codepad.org/YWVUlHnU
What I don't understand is the following:
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
I get that we're creating a class, but why define __init__? Later on I do stuff like print self.quis[randint(0, len(self.quips)-1)] which prints one of the four strings in quips, but why wouldn't I just create a function called quips or something?
When you call Game("central_corridor"), a new object is created and the Game.__init__() method is called with that new object as the first argument (self) and "central_corridor" as the second argument. Since you wrote a_game = Game(...), you have assigned a_game to refer to that new object.
This graphic may make the process easier to understand:

Note: The __new__ method is provided by Python. It creates a new object of the class given as the first argument. The built-in __new__ method doesn't do anything with the remaining arguments. If you need to, you can override the __new__ method and utilize the other arguments.
The practical reason __init__() exists in your program is set the start attribute on the Game instance you create (the one you call a_game), so that the first call to a_game.play() starts in the location where you want it to.
You're right about quips. There is no reason to have quips be set up in __init__(). You can just make it a class attribute:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With