在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中实例的大小如此之小?