1 回答

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
問(wèn)題是Game對(duì)象永遠(yuǎn)不會(huì)被實(shí)例化——也就是說(shuō),只有 的定義,而不是調(diào)用函數(shù)的Game變量版本“副本” 。Game.__init__()顯然,在調(diào)用 Game 初始化程序之前,成員變量game.path不存在(因?yàn)樗窃?中定義的__init__())。
有兩種解決方法。第一種是使Game對(duì)象的成員成為純靜態(tài)的:
class Game:
path = [(-30, 783), (0, 783), (271, 767), (369, 471), (566, 414), (625, 352), (699, 138), (856, 93), (1206, 93), (1400, 46), (1500, 97), (1759, 97), (1784, 311), (1622, 434), (1487, 734), (1670, 789), (1756, 842), (1782, 1016), (1782, 1200)]
def __init__(self, screen):
self.path =
self.enemies = None
self.towers = None
這允許Game.path獨(dú)立于任何初始化自由訪問(wèn)。但是看看你班上的其他人,這似乎不是它設(shè)計(jì)的工作方式。
因此,更好的方法是簡(jiǎn)單地實(shí)例化一個(gè)Game對(duì)象:
import Game
...
game = Game() # Create an instantiated Game object.
...
# Sets starting x and y as the first co-ordinates of the path
self.x = game.path[0][0]
self.y = game.path[0][1]
此處似乎對(duì) Python Object Instantiation 進(jìn)行了合理的描述。如果您不熟悉面向?qū)ο蟮母拍?,那么花時(shí)間閱讀它可能是值得的。
添加回答
舉報(bào)