Урок 39 из 84 · ООП

Миксины

Миксины - это классы, которые ничем не отличаются от обычных. Их главная особенность заключается в том, что они не предназначены для создания экземпляров напрямую. Их основная цель - создать переиспользуемый инструмент, который будет использоваться субклассами для расширения их функционала.

Рассмотрим следующий пример:

class CraneMixin:
    def lift(self, thing):
        return '{} is lifted'.format(thing)


class Transport:
    def go(self):
        return 'Whoom'

    def carry_goods(self):
        return 'Carrying goods'


class Car(Transport):
    def carry_passengers(self):
        return 'Carrying passengers'


class TruckWithCrane(Transport, CraneMixin):
    def carry_things(self):
        return 'Carrying things'


class MotorBoatWithCrane(Transport, CraneMixin):
    def dock(self):
        return 'Stopped and docked'

В данном примере я создал миксин CraneMixin, который самостоятельно не несет какой-либо ценности, но при этом расширяет функциональные возможости субклассов TruckWithCrane, MotorBoatWithCrane. Использовать слово Mixin в названии не обязательно, но является хорошей практикой, подсказывая разработчику о том, что данный класс обладает дополнительным функционалом.

Отзыв