.)
hon словари, созданные для экземпляров класса, крошечные по сравнению со словарями, содержащими те же атрибуты этого класса:
import sys
class Foo(object):
def __init__(self, a, b):
self.a = a
self.b = b
f = Foo(20, 30)
При использовании Python 3.5.2 следующие вызовыgetsizeof
производить:
>>> sys.getsizeof(vars(f)) # vars gets obj.__dict__
96
>>> sys.getsizeof(dict(vars(f))
288
288 - 96 = 192
байты сохранены!
Используя Python 2.7.12, однако, с другой стороны, возвращаются те же самые вызовы:
>>> sys.getsizeof(vars(f))
280
>>> sys.getsizeof(dict(vars(f)))
280
0
байты сохранены.
В обоих случаях словари, очевидно, имеютточно такое же содержание:
>>> vars(f) == dict(vars(f))
True
так что это не фактор. Кроме того, это также относится только к Python 3.
Итак, что здесь происходит? Почему размер__dict__
такого крошечного экземпляра в Python 3?