🖥 Возможно ли множественное наследование? Что такое MRO?



Ответ

Да, можно указать более одного родителя в классе потомка.



MRO – method resolution order, порядок разрешения методов. Алгоритм, по которому следует искать метод в случае, если у класса два и более родителей. Алгоритм линеизирует граф наследования. Коротко можно описать так: ищи слева направо. Поэтому чем правее стоит класс, тем меньше у него приоритет при поиске метода.





Что такое миксины?



Ответ

Миксин (mix-in, анг. “примесь”), паттерн проектирования в ООП, когда в цепочку наследования добавляется небольшой класс-помощник. Например, есть класс



class NowMixin(object):

def now():

return datetime.datetime.utcnow()

Тогда любой класс, наследованный с этим миксином, будет иметь метод now().



@python_job_interview