具有字典属性的Python对象将在每次循环迭代后附加,而不是被垃圾回收

科里

我创建了一个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语句,希望可以收集整个对象,但是这似乎不起作用。

丹妮·梅塞乔(Dani Mesejo)

假设已将players其定义为全局变量,则需要在构造函数中进行重置,如下所示:

class Game:

    def __init__(self, n):
        players = dict()

在任何语言中,拥有全局变量都是不好的做法,请参见this如果玩家是Game对象的属性,则应改为:

class Game:

    def __init__(self, n):
        self.players = { }  # dictionary construction expression

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python是否在循环的迭代结束时进行垃圾回收?

来自分类Dev

具有相同变量的Javascript垃圾回收新对象

来自分类Dev

每次迭代后都会修改python原始字典

来自分类Dev

每次迭代后循环变慢

来自分类Dev

Python-将输入变量存储在每次迭代具有不同名称的循环中

来自分类Dev

Python中的循环引用和垃圾回收

来自分类Dev

python迭代删除具有键值的字典

来自分类Dev

有多少对象可用于垃圾回收?

来自分类Dev

页面加载后,对象是否有资格进行垃圾回收?

来自分类Dev

迭代字典列表并附加python

来自分类Dev

Python线程没有被垃圾回收

来自分类Dev

Python for 循环不是迭代,

来自分类Dev

弹出后栈后,我的Fragments没有被垃圾回收

来自分类Dev

每次迭代后添加for循环的结果

来自分类Dev

画布在每次循环迭代后不更新

来自分类Dev

For 循环,每次迭代在特定秒数后完成

来自分类Dev

垃圾回收器销毁对象后删除文件

来自分类Dev

将在非静态方法中定义的变量与对象一起进行垃圾回收

来自分类Dev

以春豆为属性的垃圾回收清洁对象

来自分类Dev

元组对象没有属性附加(python)

来自分类Dev

对象的属性是在C#中和对象一起垃圾回收的,还是它们有单独的gc机制

来自分类Dev

创建以下for循环对垃圾回收有害吗?

来自分类Dev

Java中具有递归功能的垃圾回收

来自分类Dev

具有静态构造函数的类的垃圾回收

来自分类Dev

python垃圾回收器会删除循环引用吗?

来自分类Dev

如何使列表中的对象有资格进行垃圾回收?

来自分类Dev

什么时候有资格进行垃圾回收的对象?

来自分类Dev

具有任何类型属性的对象,易于存储和迭代

来自分类Dev

在字典中循环时,Nonetype对象没有属性“ items”

Related 相关文章

  1. 1

    python是否在循环的迭代结束时进行垃圾回收?

  2. 2

    具有相同变量的Javascript垃圾回收新对象

  3. 3

    每次迭代后都会修改python原始字典

  4. 4

    每次迭代后循环变慢

  5. 5

    Python-将输入变量存储在每次迭代具有不同名称的循环中

  6. 6

    Python中的循环引用和垃圾回收

  7. 7

    python迭代删除具有键值的字典

  8. 8

    有多少对象可用于垃圾回收?

  9. 9

    页面加载后,对象是否有资格进行垃圾回收?

  10. 10

    迭代字典列表并附加python

  11. 11

    Python线程没有被垃圾回收

  12. 12

    Python for 循环不是迭代,

  13. 13

    弹出后栈后,我的Fragments没有被垃圾回收

  14. 14

    每次迭代后添加for循环的结果

  15. 15

    画布在每次循环迭代后不更新

  16. 16

    For 循环,每次迭代在特定秒数后完成

  17. 17

    垃圾回收器销毁对象后删除文件

  18. 18

    将在非静态方法中定义的变量与对象一起进行垃圾回收

  19. 19

    以春豆为属性的垃圾回收清洁对象

  20. 20

    元组对象没有属性附加(python)

  21. 21

    对象的属性是在C#中和对象一起垃圾回收的,还是它们有单独的gc机制

  22. 22

    创建以下for循环对垃圾回收有害吗?

  23. 23

    Java中具有递归功能的垃圾回收

  24. 24

    具有静态构造函数的类的垃圾回收

  25. 25

    python垃圾回收器会删除循环引用吗?

  26. 26

    如何使列表中的对象有资格进行垃圾回收?

  27. 27

    什么时候有资格进行垃圾回收的对象?

  28. 28

    具有任何类型属性的对象,易于存储和迭代

  29. 29

    在字典中循环时,Nonetype对象没有属性“ items”

热门标签

归档