Going via the ```__slots__``` is more generic i.e.

```
return {attr: getattr(self, attr) for attr in self.__slots__}
```