举例来说,假设我有一个像这样的类:

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的可能性。程序。

09-04 17:40
查看更多