相关疑难解决方法(0)

为什么在Python 3中__dict__实例的大小要小得多?

在Python中,与包含该类相同属性的字典相比,为类实例创建的字典很小:

import sys

class Foo(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b

f = Foo(20, 30)
Run Code Online (Sandbox Code Playgroud)

使用Python 3.5.2时,以下调用getsizeof生成:

>>> sys.getsizeof(vars(f))  # vars gets obj.__dict__
96 
>>> sys.getsizeof(dict(vars(f))
288
Run Code Online (Sandbox Code Playgroud)

288 - 96 = 192 字节已保存!

但是,另一方面,使用Python 2.7.12,相同的调用返回:

>>> sys.getsizeof(vars(f))
280
>>> sys.getsizeof(dict(vars(f)))
280
Run Code Online (Sandbox Code Playgroud)

0 保存的字节数

在这两种情况下,词典显然具有完全相同的内容:

>>> vars(f) == dict(vars(f))
True
Run Code Online (Sandbox Code Playgroud)

所以这不是一个因素.此外,这也仅适用于Python 3.

那么,这里发生了什么?为什么__dict__Python 3中实例的大小如此之小?

python dictionary class python-3.x python-internals

16
推荐指数
1
解决办法
942
查看次数

标签 统计

class ×1

dictionary ×1

python ×1

python-3.x ×1

python-internals ×1