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

Tig*_*gra 1 python memory

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

这个对象将使用一些像这样的字典:

{
'text':doSomething,
'string':doAnotherThing,
'int':doSomethingCrazy
}
Run Code Online (Sandbox Code Playgroud)

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

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

class MyClass(object):
   thatDict={}
Run Code Online (Sandbox Code Playgroud)

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

class MyClass(object):
   def someFunc():       
      thatDict={}
Run Code Online (Sandbox Code Playgroud)

Die*_*Epp 6

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

class MyClass(object):
    def someFunc():       
        thatDict={} # recreated every function call
Run Code Online (Sandbox Code Playgroud)

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

class MyClass(object):
    thatDict={} # Only one copy
Run Code Online (Sandbox Code Playgroud)

您也可以使用相同的效果在文件范围创建它:

thatDict={} # Only one copy
class MyClass(object):
    ...
Run Code Online (Sandbox Code Playgroud)

  • 不,当你在类中声明变量时,它就像一个静态变量.使用self时,它不会神奇地创建新副本.如果要为实例创建本地副本,请使用类"__init__". (3认同)