New submission from Serhiy Storchaka: For now OrderedDict always creates an empty dict for __dict__.
>>> from collections import OrderedDict >>> import gc >>> gc.get_referents(OrderedDict()) [{}] >>> class OD(OrderedDict): pass ... >>> gc.get_referents(OD()) [<class '__main__.OD'>, {}] But dict subclasses (as well as most other classes) create an empty dict for __dict__ only if needed. >>> class D(dict): pass ... >>> d = D() >>> gc.get_referents(d) [<class '__main__.D'>] >>> d.__dict__ {} >>> gc.get_referents(d) [{}, <class '__main__.D'>] This allows to save CPU time for dictionary creation and a memory (144 bytes on 32-bit, twice as much on 64-bit). Proposed patch makes __dict__ in OrderedDict to be created only if needed. ---------- components: Extension Modules files: odict___dict__.patch keywords: patch messages: 256988 nosy: eric.snow, rhettinger, serhiy.storchaka priority: normal severity: normal stage: patch review status: open title: Lazy creation of __dict__ in OrderedDict type: enhancement versions: Python 3.6 Added file: http://bugs.python.org/file41419/odict___dict__.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue25949> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com