我有一些对象将始终存储在内存中,并且会有数千个实例,因此有效使用内存非常重要.
这个对象将使用一些像这样的字典:
{
'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)
如果将其放在函数中,则每次调用函数时都会重新创建字典.这有点浪费,特别是字典很大:
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)