What is the difference between a mixin and inheritance?
Mixins are vastly used in a more "plugin" like manner.
They are the same but in a different context each one of them. Usually when we talk about inheritance we are talking about SINGLE inheritance, and a mixin is a construct that allows MULTIPLE inheritance.
This is a language construct that is highly controversial in the OOP world because of:
But that aside, is a powerful construct that's used in various languages and frameworks, some examples are:
https://github.com/django/django/blob/98126cdfaf632abc8f0b5e65910e46a4eedc4641/django/views/generic/list.py#L194
https://docs.djangoproject.com/en/3.1/topics/class-based-views/mixins/