Иногда использование mixin с множественным наследованием может помочь нам улучшить возможность повторного использования нашего кода.
Например, следующий дизайн
class FollowableMixin(object):
def get_followers(self):
...
...
class User(FollowableMixin):
...
может быть лучше повторно использован, чемпросто добавив get_followers
к User
:
class User(object):
def get_followers(self):
...
...
, потому что позже мы можем рассмотреть возможность поддержки других последующих объектов, которые являются потенциальными клиентами get_followers
:
class BookStore(FollowableMixin):
...
Однако, если этошаблон перегружен, код может быть слишком сложным.
class User(FollowableMixin, RunnableMixin, FlyableMixin, WhatMixin ...):
...
Со всеми этими смешанными классами, внедряющими свойства и методы в ваш класс, становится очень трудно понять ваш код.Например, вы не знаете, откуда вызывается метод, и этот метод может, в свою очередь, включать вызов метода в другом миксине ...
Что я должен сделать, чтобы упростить эту программу?