Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

+1 128новых вакансий за сутки·93 813вакансий открыто сейчас·Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 269
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 410 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 196
  • Облачные технологии14 160
  • QA вакансии3 451
  • Backend вакансии2 107
  • Инженер данных1 800
  • Продакт-менеджер1 247

Разработка

  • Android1 855
  • iOS1 695
  • Fullstack вакансии995
  • AI вакансии952
  • Frontend вакансии751
  • Mobile вакансии43

По стеку

  • Go8 754
  • Java6 595
  • Node.js2 038
  • .NET1 738
  • Kotlin1 617
  • Rust1 473
  • C#718
  • PHP692
  • C++582

DevOps и инфраструктура

  • Kubernetes7 778
  • DevOps вакансии6 088
  • Linux-инфраструктура5 502
  • Terraform / IaC4 276
  • CI/CD3 275
  • Мониторинг и Observability1 793
  • SRE563
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 141
  • Бизнес-аналитик921
  • Аналитик данных860
  • Системный аналитик154

Другие направления

  • Проджект-менеджер621
  • UI/UX дизайн148
  • Ручное тестирование14

По регионам

  • Вакансии в США44 164
  • Вакансии в Европе24 016
  • Вакансии в Канаде4 533
  • Работа в России3 837

По формату

  • Удалённые вакансии75 134
  • Релокация в США44 163
  • Гибридная работа12 456
  • Офисная работа7 066

По уровню

  • Senior вакансии42 633
  • Middle вакансии20 971
  • Junior вакансии6 706

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме PythonВсе вопросы
PythonMiddleТеория

Что такое MRO?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

MRO (Method Resolution Order) — линейный порядок классов, по которому Python ищет атрибут/метод. Доступен через Cls.__mro__ / Cls.mro(). Строится C3-линеаризацией: сохраняет local precedence order и monotonicity, при конфликте — TypeError при объявлении класса.

Пример ромба

class A:
    def ping(self):
        return "A"


class B(A):
    pass


class C(A):
    def ping(self):
        return "C"


class D(B, C):
    pass


print([cls.__name__ for cls in D.__mro__])
# ['D', 'B', 'C', 'A', 'object']

print(D().ping())  # 'C' — потому что C идёт раньше A в MRO


# Конфликт MRO — TypeError при объявлении
try:
    class X(B, A, C):
        pass
except TypeError as e:
    print(e)
    # Cannot create a consistent method resolution order (MRO) for bases A, C

Что это

MRO — Method Resolution Order, линейный список классов, по которому Python ищет атрибут при obj.attr. Когда обращение не находит attribute в obj.__dict__, поиск идёт по type(obj).__mro__ слева направо. super() также делегирует следующему классу в MRO текущего экземпляра.

Доступ: Cls.__mro__ (tuple) или Cls.mro() (list). Всегда заканчивается на object.

Алгоритм C3

MRO вычисляется при создании класса по алгоритму C3 (Dylan, 1996; для Python — 2.3, new-style classes). Гарантии:

  • Local precedence order: порядок прямых родителей сохраняется. В class D(B, C) B идёт раньше C.
  • Monotonicity: если X идёт до Y в MRO предка, то и в MRO любого потомка.
  • Consistency: MRO потомка согласован с MRO каждого предка.

Если согласованного порядка нет — Python бросает TypeError: Cannot create a consistent method resolution order.

super() и MRO

class A:
    def m(self):
        return "A"


class B(A):
    def m(self):
        return "B->" + super().m()


class C(A):
    def m(self):
        return "C->" + super().m()


class D(B, C):
    def m(self):
        return "D->" + super().m()


print(D.__mro__)
# (D, B, C, A, object)

print(D().m())  # D->B->C->A
# super() идёт по MRO, A вызывается ровно один раз (diamond решён)

Когда это важно

  • Кооперативные mixin-ы: каждый mixin вызывает super().__init__(**kwargs) и пробрасывает остальные kwargs дальше по MRO.
  • Django/DRF view, SQLAlchemy declarative mixins, pytest plugins — везде, где собирают функциональность.
  • Отладка «откуда взялся этот метод» — печатайте MRO и смотрите первый класс, где метод определён.

Подводные камни

  • Считать MRO просто DFS слева направо — это было в Python 2.2 (old-style); новый style использует C3, на ромбах порядок другой.
  • Конфликт MRO при объявлении: class D(B, A) когда B(A); решайте через корректный порядок.
  • Mixin не зовёт super().__init__() — цепочка обрывается, следующие в MRO не инициализируются.
  • Передача **kwargs в object.__init__ — он не принимает аргументов; последний mixin перед object должен «съесть» остатки.
  • Использовать super(ClsName, self) явно — устаревший стиль; в Py3 пишите просто super().
  • Изменять __bases__ на лету или динамически делать классы — MRO пересчитывается, читать такой код больно.

Частые вопросы на собеседовании

  • Что такое truthy и falsy значения в Python?
  • Когда использовать threading?
  • Что такое type hints и зачем они нужны?
  • Как работает yield?

Типичные ошибки

  • Не знать mro.
  • Не объяснять ромбовидное наследование.
  • Путать MRO и порядок создания объектов.

Что проверяет интервьюер

  • Может прочитать mro.
  • Понимает связь с super.
  • Знает, что алгоритм — C3.

Как вы знаете этот вопрос?

Проверить себя по теме Python →

Источники

  • https://docs.python.org/3/reference/datamodel.html

Связанные темы

PythonClassespython-internals

Вакансии с этим навыком

Python вакансии
  • Internship - Machine Learning and image-based EUV system setup
  • Internship-Optical Modeling and Simulation Engineering
  • Engineering Manager, Copilot
  • Test Engineer - Electric Propulsion, Satellites (Starlink)
  • Ingeniero de Machine Learning & Modelado