This is pretty basic. The class is not to be used directly, instead it's supposed to be inherited from. When inheriting, you're supposed to have your own update method and remember to fill in the attributes. A sprite can be in many groups and that's already handled by the base class. The init of your own class should do the super's init first
why doesnt upper classes put their own call to `__init__` in `__new__` and in `__init_subclass__` put so that if `__new__` is overwritten, then overwrite `__new__` back calling your `__new__` first and then the user's `__new__` (you're never sure when people are calling your methods or not)