The second was just meant for `frame_attributes` to be a dictionary, `{'equinox': self.equinox, 'obstime': self.obstime}` (etc.). The self-referring meant using `self.equinox`, etc. Though if those attributes are going to be behind setters and getters, one could in principle just store the actual values in the dictionary, i.e.,
```
@property
def equinox(self):
    return self.frame_attributes['equinox']
```
But that would seem an implementation detail.

As for `__dict__`, this was triggered only by my surprise that for `Quantity` and its subclasses, there was no attributes other than the ones needed (only `_unit` for `Quantity` itself). But I think you are right this may not be the case here; at the very least, it would seem you would have a `data` attribute.