举例来说,假设我有一个像这样的类:
def class Foo(object):
def __init__(self,x):
self.x = x
def lookup(self):
return dict[x]
lookup
函数的目的是在字典中查找x
并返回值。假设这个字典很大。我想知道是否在类中声明dict,还是将dict声明为全局变量。我担心内存效率:dict将保持不变,我希望它不占用过多的内存。因此,我在问类如何使用内存。如果我声明例如50,000个
Foo
实例,我在Foo
中声明了该格,这是否意味着我生成了50,000个Foo
副本?而如果我将字典称为全局变量,则不会产生任何其他副本?如何制作字典的副本尽可能少?理想情况下,该程序只有一个。
最佳答案
在这种情况下,您应该将dict
作为全局变量。内部变量的想法是,您可以独立地更改和使用它们而不会发生冲突。这就是每个Foo
实例都有其自己的dict副本的原因。 (实际上命名为self.dict
-就像您应该在使用对象的内部变量的self.x
函数中将lookup
作为参数一样。)使用全局变量既可以节省内存,又可以防止dict中存在不同版本的dict的可能性。程序。