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

+1 501новая вакансия за сутки·57 707вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python11 001
  • Облачные технологии7 882
  • QA вакансии2 530
  • Android1 457
  • Инженер данных929
  • Продакт-менеджер312

Разработка

  • iOS1 361
  • Backend вакансии1 335
  • AI вакансии645
  • Fullstack вакансии521
  • Frontend вакансии460
  • Mobile вакансии28

По стеку

  • Go6 500
  • Java3 643
  • Node.js1 203
  • Kotlin1 161
  • Rust1 155
  • .NET787
  • PHP334
  • C++285
  • C#211

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

  • Kubernetes4 701
  • Linux-инфраструктура3 588
  • DevOps вакансии3 059
  • Terraform / IaC2 617
  • Мониторинг и Observability1 284
  • CI/CD929
  • SRE345
  • Кибербезопасность28

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

  • Аналитик данных556
  • Data Scientist443
  • Бизнес-аналитик412
  • Системный аналитик71

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

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

По регионам

  • Вакансии в США28 307
  • Вакансии в Европе10 602
  • Работа в России3 671
  • Вакансии в Канаде2 400

По формату

  • Удалённые вакансии44 927
  • Релокация в США28 307
  • Гибридная работа6 438
  • Офисная работа5 670

По уровню

  • Senior вакансии25 431
  • Middle вакансии11 844
  • Junior вакансии4 210

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify36 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

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

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

Что такое abstract class в Python?

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

Абстрактный класс — это класс, который нельзя инстанцировать, пока наследник не реализует все методы, помеченные @abstractmethod. В Python реализуется через модуль abc (наследование от ABC или метакласс ABCMeta).

Пример

from abc import ABC, abstractmethod

class Storage(ABC):
    @abstractmethod
    def save(self, key: str, value: bytes) -> None: ...

    @abstractmethod
    def load(self, key: str) -> bytes: ...

    # Общая реализация — наследники получат её бесплатно
    def save_text(self, key: str, text: str) -> None:
        self.save(key, text.encode("utf-8"))

class MemoryStorage(Storage):
    def __init__(self) -> None:
        self._data: dict[str, bytes] = {}

    def save(self, key: str, value: bytes) -> None:
        self._data[key] = value

    def load(self, key: str) -> bytes:
        return self._data[key]

Storage()           # TypeError: Can't instantiate abstract class Storage
MemoryStorage()     # OK — все abstractmethod переопределены

Что это

Абстрактный класс в Python — это класс, объявленный через модуль abc (наследник abc.ABC или с metaclass=abc.ABCMeta), содержащий один или несколько методов, помеченных декоратором @abstractmethod. Прямое создание экземпляра такого класса (или наследника, не переопределившего все абстрактные методы) бросает TypeError на этапе вызова __init__.

Зачем нужен

  • Зафиксировать контракт для семейства классов (например, Storage, Notifier, PaymentProvider) и получить ошибку при импорте/инстанцировании, а не глубоко в runtime.
  • Дать частичную реализацию: можно совместить @abstractmethod с обычными методами и атрибутами, наследники получат готовое поведение и обязаны доопределить только абстрактные части.
  • Поддержать виртуальное наследование через register() — пометить чужой класс как наследника без модификации его исходников.

ABC vs Protocol

abc.ABC — runtime-механизм, требует явного наследования и проверяет реализацию при инстанцировании. typing.Protocol — structural typing, проверяется статически (mypy/pyright) и не требует наследования: достаточно, чтобы у объекта были нужные методы. Используйте ABC, когда важна общая реализация и runtime-проверка; Protocol — когда нужен только тип-контракт для duck typing.

Сопутствующие декораторы

  • @abstractmethod — обязательный метод.
  • @property + @abstractmethod — абстрактное свойство (порядок: @property сверху).
  • @classmethod/@staticmethod + @abstractmethod — абстрактные фабрики.

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

  • Декоратор @abstractmethod сам по себе не работает — класс должен наследоваться от ABC или использовать ABCMeta, иначе экземпляр создастся без ошибки.
  • Старая идиома class Foo(metaclass=ABCMeta) ломает множественное наследование, если другой родитель тоже задаёт метакласс — удобнее наследоваться от ABC.
  • Класть в абстрактный класс слишком много реализации — получите жёсткую иерархию вместо контракта.
  • ABC.register(cls) делает isinstance-проверку истинной, но не проверяет, что у cls действительно есть нужные методы — это ответственность разработчика.

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

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

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

  • Не знать abc.ABC.
  • Считать abstractmethod только документацией.
  • Не отличать ABC от Protocol.

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

  • Показывает ABC и abstractmethod.
  • Объясняет TypeError при инстанцировании.
  • Знает альтернативу Protocol.

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

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

Источники

  • https://docs.python.org/3/library/abc.html
  • https://docs.python.org/3/library/typing.html

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

PythonArchitectureoop

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

Python вакансии
  • Machine Learning Researcher
  • Test Engineering Intern
  • DevOps Engineer
  • Director, Forward Deployed Engineering
  • Software Developer 2