.)

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?

Ответы на вопрос(1)

Ваш ответ на вопрос