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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 222
  • Облачные технологии14 171
  • QA вакансии3 456
  • Backend вакансии2 114
  • Инженер данных1 801
  • Продакт-менеджер1 247

Разработка

  • Android1 858
  • iOS1 698
  • Fullstack вакансии997
  • AI вакансии955
  • Frontend вакансии755
  • Mobile вакансии44

По стеку

  • Go8 752
  • Java6 593
  • Node.js2 036
  • .NET1 739
  • Kotlin1 618
  • Rust1 472
  • C#717
  • PHP690
  • C++579

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

  • Kubernetes7 787
  • DevOps вакансии6 095
  • Linux-инфраструктура5 508
  • Terraform / IaC4 287
  • CI/CD3 272
  • Мониторинг и Observability1 792
  • SRE566
  • Кибербезопасность454

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

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

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

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

По регионам

  • Вакансии в США44 166
  • Вакансии в Европе24 014
  • Вакансии в Канаде4 535
  • Работа в России3 867

По формату

  • Удалённые вакансии75 005
  • Релокация в США44 166
  • Гибридная работа12 485
  • Офисная работа7 090

По уровню

  • Senior вакансии42 643
  • Middle вакансии20 960
  • Junior вакансии6 708

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

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

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

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

Что такое magic / dunder methods? Какие ты реально использовал?

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

Dunder/magic methods — методы с __ префиксом и суффиксом, через которые Python подключает класс к data model: операторы, len(), iter(), with, call(), сравнение, hash, attribute access. CPython ищет их на типе, а не на экземпляре.

Пример

from functools import total_ordering


@total_ordering
class Version:
    def __init__(self, major: int, minor: int, patch: int):
        self.t = (major, minor, patch)

    def __repr__(self) -> str:
        return f"Version({self.t[0]}.{self.t[1]}.{self.t[2]})"

    def __eq__(self, other: object) -> bool:
        return isinstance(other, Version) and self.t == other.t

    def __lt__(self, other: "Version") -> bool:
        return self.t < other.t

    def __hash__(self) -> int:
        return hash(self.t)


# Контейнер
class Page:
    def __init__(self, items):
        self._items = list(items)

    def __len__(self) -> int:
        return len(self._items)

    def __iter__(self):
        return iter(self._items)

    def __getitem__(self, idx):
        return self._items[idx]

    def __contains__(self, x) -> bool:
        return x in self._items

    def __repr__(self) -> str:
        return f"Page({self._items!r})"


# Callable
class Adder:
    def __init__(self, n):
        self.n = n

    def __call__(self, x):
        return x + self.n


p = Page([1, 2, 3])
print(len(p), 2 in p, list(p), p[0])
print(Adder(10)(5))                 # 15
print(sorted([Version(1, 2, 3), Version(1, 1, 9)]))

Что это

Dunder (double underscore) methods — protocol-методы Python data model. Вы не вызываете их напрямую, их вызывает синтаксис: len(x) → type(x).__len__(x), x + y → type(x).__add__(x, y), for i in x → type(x).__iter__(x), with x → type(x).__enter__(x).

Важно: CPython ищет dunder на типе, а не на инстансе — переопределение obj.__len__ = ... не повлияет на len(obj). Это сделано из соображений скорости и предсказуемости.

Группы, которые встречаются чаще всего

  • Идентичность и представление: __repr__ (для дебага, обязателен), __str__ (для пользователя), __format__.
  • Сравнение: __eq__, __hash__, __lt__/__le__/__gt__/__ge__ (или @functools.total_ordering).
  • Контейнерные: __len__, __contains__, __iter__, __getitem__/__setitem__/__delitem__.
  • Context manager: __enter__/__exit__, __aenter__/__aexit__.
  • Числовые: __add__/__radd__, __sub__, __mul__, __truediv__, __neg__, in-place __iadd__.
  • Callable: __call__ — экземпляр становится вызываемым.
  • Атрибуты: __getattr__ (fallback), __getattribute__ (всегда), __setattr__, __delattr__, __slots__.
  • Lifecycle: __init__, __new__, __del__, __init_subclass__, __class_getitem__ (для Generic типов).

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

  • Реализовать __eq__ без __hash__ — экземпляр становится unhashable (Python автоматически выставляет __hash__ = None).
  • Нарушать симметрию __eq__: a == b и b == a должны давать одинаковый результат, иначе сломаются in, dict-lookup, set.
  • Возвращать не-NotImplemented из __add__ при неизвестном типе — Python тогда не попробует __radd__ у второго операнда.
  • Динамически менять __len__ на экземпляре — CPython ищет dunder на типе и проигнорирует.
  • Перегружать __getattr__ и забыть, что он вызывается только если обычный lookup провалился (__getattribute__ бросил AttributeError).
  • __del__ с побочными эффектами — порядок не гарантирован при выходе из интерпретатора; используйте weakref.finalize.

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

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

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

  • Перечислять методы без понимания протоколов.
  • Вызывать len напрямую вместо len(obj).
  • Не знать про поиск специальных методов на типе.

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

  • Связывает dunder с протоколами.
  • Приводит реальные методы из опыта.
  • Понимает риски нарушения data model.

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

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

Источники

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

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

Pythonooppython-internals

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

Python вакансии
  • Summer 2027 Quality Engineering Internship
  • Pre-si Power and Performance System Validation Engineer
  • Cleared Data Analyst
  • Sr Software Engineer - Remote
  • Principal Product Manager, Agent Intelligence