.. change::
    :tags: bug, orm
    :tickets: 4519

    Accessing a collection-oriented attribute on a newly created object no
    longer mutates ``__dict__``, but still returns an empty collection as has
    always been the case.   This allows collection-oriented attributes to work
    consistently in comparison to scalar attributes which return ``None``, but
    also don't mutate ``__dict__``.  In order to accommodate for the collection
    being mutated, the same empty collection is returned each time once
    initially created, and when it is mutated (e.g. an item appended, added,
    etc.) it is then moved into ``__dict__``.  This removes the last of
    mutating side-effects on read-only attribute access within the ORM.

    .. seealso::

        :ref:`change_4519`