我创建了一个Game类,其中有一个玩家的字典属性作为属性,其中应该有〜36个玩家。
我正在遍历一个循环,每次迭代都创建一个Game对象的新实例,并将每个玩家的内容打印到一个csv文件中。
但是,尽管每次迭代都创建了一个新对象,但似乎将player属性附加到了垃圾回收器上。
sheet = open('playerGames.csv', 'w+')
gameNum = 2018020001
while gameNum < 2018020015:
game = Game(gameNum)
print(len(game.players), end=", ")
for player in game.players:
for stat in game.players[player]:
sheet.write(str(game.players[player][stat]) + ",")
sheet.write("\n")
game = None
gameNum = gameNum + 1
上面的print语句每次应该打印大约36个数字,但是它输出以下内容 36, 72, 108, 144, 163, 199, 217, 253, 289, 325, 361, 397, 433, 469
垃圾收集应该清除吗?我添加了该game = None
语句,希望可以收集整个对象,但是这似乎不起作用。
假设已将players
其定义为全局变量,则需要在构造函数中进行重置,如下所示:
class Game:
def __init__(self, n):
players = dict()
在任何语言中,拥有全局变量都是不好的做法,请参见this。如果玩家是Game
对象的属性,则应改为:
class Game:
def __init__(self, n):
self.players = { } # dictionary construction expression
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句