1 回答

TA貢獻2019條經驗 獲得超9個贊
問題是Game對象永遠不會被實例化——也就是說,只有 的定義,而不是調用函數的Game變量版本“副本” 。Game.__init__()顯然,在調用 Game 初始化程序之前,成員變量game.path不存在(因為它是在 中定義的__init__())。
有兩種解決方法。第一種是使Game對象的成員成為純靜態的:
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獨立于任何初始化自由訪問。但是看看你班上的其他人,這似乎不是它設計的工作方式。
因此,更好的方法是簡單地實例化一個Game對象:
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]
此處似乎對 Python Object Instantiation 進行了合理的描述。如果您不熟悉面向對象的概念,那么花時間閱讀它可能是值得的。
添加回答
舉報