什么更有效?类定义中的dict或func定义中的dict?

时间:2011-11-22 15:37:55

标签: python memory

我有一些对象将始终存储在内存中,并且会有数千个实例,因此有效使用内存非常重要。

此对象将使用某些字典:

{
'text':doSomething,
'string':doAnotherThing,
'int':doSomethingCrazy
}

当然我可以在模块级别上把它放在类之外,所以它肯定只会存储在内存中一次,但我更喜欢把它们放在一起,所以如果它只在那个类中使用它看起来如果它被保留在课堂内会更好。

问题是,如果我将dict放入类定义中,它是否只会存储在内存中一次?

class MyClass(object):
   thatDict={}

如果我把它放在函数定义中,它会只存储在内存中一次吗?

class MyClass(object):
   def someFunc():       
      thatDict={}

1 个答案:

答案 0 :(得分:6)

如果将其放在函数中,则每次调用函数时都会重新创建字典。这有点浪费,特别是字典很大:

class MyClass(object):
    def someFunc():       
        thatDict={} # recreated every function call

如果将它放在类定义中,则会创建一次:加载模块时。

class MyClass(object):
    thatDict={} # Only one copy

您也可以在文件范围内创建具有相同效果的内容:

thatDict={} # Only one copy
class MyClass(object):
    ...