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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python9 813
  • Облачные технологии6 898
  • QA вакансии2 239
  • Android1 398
  • Инженер данных922
  • Продакт-менеджер346

Разработка

  • iOS1 305
  • Backend вакансии1 280
  • AI вакансии569
  • Fullstack вакансии543
  • Frontend вакансии450
  • Mobile вакансии27

По стеку

  • Go5 484
  • Java3 453
  • Node.js1 146
  • Kotlin1 133
  • Rust883
  • .NET837
  • PHP383
  • C++265
  • C#261

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

  • Kubernetes3 893
  • Linux-инфраструктура3 013
  • DevOps вакансии2 970
  • Terraform / IaC2 240
  • CI/CD1 066
  • Мониторинг и Observability1 051
  • SRE304
  • Кибербезопасность52

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

  • Аналитик данных542
  • Data Scientist482
  • Бизнес-аналитик455
  • Системный аналитик60

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

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

По регионам

  • Вакансии в США30 650
  • Вакансии в Европе12 551
  • Работа в России3 510
  • Вакансии в Канаде2 658

По формату

  • Удалённые вакансии48 186
  • Релокация в США30 650
  • Гибридная работа7 410
  • Офисная работа5 407

По уровню

  • Senior вакансии26 826
  • Middle вакансии12 754
  • Junior вакансии4 519

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

Все компании
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise134 вакансии
  • Celonis30 вакансий
  • Infobip28 вакансий
  • Spotify24 вакансии
  • Adyen19 вакансий
  • Darktrace17 вакансий
  • Monzo13 вакансий

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

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

Чем отличаются __str__ и __repr__? Когда какой метод определять?

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

__str__ — человекочитаемое представление для пользователя, __repr__ — однозначное техническое представление для разработчика, попадающее в логи, REPL и списки. Если есть только __repr__, он работает и за __str__.

Пример

class User:
    def __init__(self, user_id: int, email: str, token: str) -> None:
        self.user_id = user_id
        self.email = email
        self._token = token

    def __str__(self) -> str:
        return self.email

    def __repr__(self) -> str:
        return f"User(user_id={self.user_id!r}, email={self.email!r})"

u = User(1, "ada@example.com", "secret-token")
print(str(u))           # ada@example.com
print(repr(u))          # User(user_id=1, email='ada@example.com')
print([u])              # [User(user_id=1, email='ada@example.com')]
print(f"{u} / {u!r}")   # ada@example.com / User(...)

Назначение __str__ и __repr__

  • __str__ вызывает str(obj), print(obj), f"{obj}", format(obj) и %s — это человекочитаемый вид для пользователя.
  • __repr__ вызывает repr(obj), REPL-вывод, f"{obj!r}", %r, отображение элементов в list/dict, логирование через %r и logger.debug("%r", obj).
  • Если определён только __repr__, он используется как fallback для str. Обратное неверно.

Контракты

  • __repr__ должен быть однозначным и, по возможности, валидным Python-выражением: User(id=1, email='a@b.c'). Это сильно облегчает отладку.
  • __str__ может быть кратким и форматированным под UI.
  • Оба метода должны возвращать str и не падать. Падение в __repr__ ломает логирование и отладчики.

В dataclasses

@dataclass автоматически генерирует __repr__ по полям. Используйте field(repr=False), чтобы спрятать секреты:

from dataclasses import dataclass, field

@dataclass
class Credentials:
    user: str
    password: str = field(repr=False)

print(Credentials("ada", "hunter2"))   # Credentials(user='ada')

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

  • В __repr__ печатать пароли, токены, JWT, ключи — попадают в логи и трейсы.
  • Определить только __str__: в списках/словарях видите <User object at 0x...> и отлаживать невозможно.
  • Возвращать не-str (например, bytes) — TypeError: __repr__ returned non-string.
  • Падать в __repr__ при недогруженном поле (например, lazy ORM-атрибут) — ломает logger.exception.
  • Обещать eval(repr(obj)) == obj для сложных объектов и завязывать на это сериализацию — это про debug, не про persistence.
  • Использовать repr вместо нормальной сериализации (json.dumps/pickle) в межпроцессном обмене.
  • Забыть про !r в логах: f"value={x}" теряет кавычки вокруг строк и скрывает невидимые символы вроде \n.

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

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

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

  • Говорить, что методы отличаются только форматированием.
  • Не упоминать fallback repr для str.
  • Игнорировать безопасность логов.

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

  • Понимает аудиторию каждого метода.
  • Может написать полезный repr.
  • Знает !r в f-string.

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

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

Источники

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

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

Pythonloggingoop