Mixin предоставляет способ добавления дополнительных функций (методов) и атрибутов к другому классу.
Хотя технически он определяется как класс в Python,
он широко используется для добавления реализации определенного метода в существующий класс.
Микширование обеспечивает фактическую реализацию, делает код СУХИМ (без повторения реализации) и пригодным для повторного использования.
При именовании микширования принято добавлять Mixin к имени класса.
Пример фрагмента кода ниже:
[*]Миксин:
class MoveMixin: def move(self): print(f'{self.__class__.__name__} is moving')
__class__.__name__ получает имя текущего класса
[*] определение классов
class Cat(MoveMixin): def jump(self): print('Cat jumps') class Dog(MoveMixin): def bite(self): print('Dog bites')
[*]использование
dog = Dog().move()
cat = Cat().move()
[*]вывод
Собака движется
Кошка движется
Благодаря этому мы можем повторно использовать реальную реализацию move(), не повторяя ее в каждом из основных классов (собака, кошка).
Примечание. Мы используем ключевое слово «класс» в определении Mixin. Это не означает, что он должен быть создан (хотя он может быть создан, потому что Python его поддерживает).
Mixin не следует путать с интерфейсом. Это две разные вещи. Интерфейс гарантирует, что конкретный класс должен реализовать метод, в то время как миксин обеспечивает реализацию функциональности.
Вот ссылка на объяснение по Интерфейсу