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 进行了合理的描述。如果您不熟悉面向对象的概念,那么花时间阅读它可能是值得的。
添加回答
举报