我有一些对象将始终存储在内存中,并且会有数千个实例,因此有效地使用内存很重要。
这个对象将使用一些像这样的字典:
{
'text':doSomething,
'string':doAnotherThing,
'int':doSomethingCrazy
}
当然我可以把它放在类之外,在模块级别,所以它肯定只会在内存中存储一次,但我更喜欢把东西放在一起,所以如果它只在那个类中使用它看起来如果将其保存在类里面会更好。
问题是,如果我把dict放到类定义中,它是否只在内存中存储一次?
class MyClass(object):
thatDict={}
或者如果我把它放在函数定义中,它会只在内存中存储一次吗?
class MyClass(object):
def someFunc():
thatDict={}
请您参考如下方法:
如果将它放在一个函数中,则每次调用该函数时都会重新创建字典。这有点浪费,尤其是字典很大:
class MyClass(object):
def someFunc():
thatDict={} # recreated every function call
如果将它放在类定义中,它只会创建一次:加载模块时。
class MyClass(object):
thatDict={} # Only one copy
您也可以在文件范围内创建它,效果相同:
thatDict={} # Only one copy
class MyClass(object):
...
