我已經完成了一些閱讀,並且無法完全按照我的意願去理解它。我正在一點點「選擇自己的冒險」,從LPTHW教程遊戲,以下是完整的腳本:http://codepad.org/YWVUlHnU__init__的用途
什麼我不明白的是:
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」類的實例,我使用的任何屬性都將決定遊戲的開始位置。因此,如果我想通過在遊戲類中的'laser_weapon_armory'函數開始遊戲,我會做'a_game = game(「laser_weapon_armory」)'然後''a_game.play()'。 '__init__'與這個有什麼關係? – ZCJ 2012-02-16 21:06:45
__init__方法設置對象的基本狀態......想象一下,如果需要先連接到數據庫並首先下載一些數據以準備好自己,那麼在做其他事情之前,您應該在__init__中執行此操作。這就像是要從經銷商處購買汽車......沒有__init__,你會得到一個沒有車輪,沒有引擎的汽車物體,但如果你願意,你仍然可以car.drive()。 – michaelfilms 2012-02-16 21:25:20
@ZCJ當你寫'Game(「laser_weapon_armory」)'時,實際發生的是一個新的'Game'實例被創建,我們稱它爲'obj'(它現在真的沒有名字),然後Python _automatically_運行'Game .__ init __(obj,「laser_weapon_armory」)'並返回'obj'(你最終分配給名字'a_game')。 '__init__'將'obj.start'設置爲''laser_weapon_armory「''。當你運行'a_game.play()'時,實際發生的事情是Python正在運行'Game.play(a_game)''self'參數被'a_game'填充,所以'self.start'是''laser_weapon_armory 「'當你調用'a_game.play()'時。 – 2012-02-16 21:52:10