TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #2642 4.71K
​Typing Self: интуитивно понятный способ аннотирования методов, возвращающих экземпляр своего класса

Ведёт себя так же, как TypeVar, но более краток и прост:

Допустим, мы создали метод get_scale(), который возвращает экземпляр того же класса Scale с помощью self:

class Shape:
def set_scale(self, scale: float):
self.scale = scale
return self

Shape().set_scale(0.5) # => Экземпляр класса Shape

Один из способов обозначить тип возвращаемого значения — указать его как текущий класс Shape. Использование этого метода заставляет средство проверки типов выводить тип Shape, как и ожидалось:

class Shape:
def set_scale(self, scale: float) -> Shape:
self.scale = scale
return self

Shape().set_scale(0.5) # => Shape
...

PEP-673

#pep
  • 👍 6
  • 👎 5
More from @zen_of_python
  1. Oct 9, 2026Как добавить MCP-сервер в Django-проект django-mcpz позволяет зарегистрировать Python-функ…
  2. Oct 9, 2026Как дождаться обработки очереди asyncio Пустая очередь ещё не означает, что работа законче…
  3. Oct 9, 2026Почему frozendict не замораживает вложенные объекты В Python 3.15 появляется встроенный fr…
  4. Oct 8, 2026Почему цикл внутри теста скрывает часть ошибок Тест перебирает десять входов и проверяет р…
  5. Oct 8, 2026Как выполнять CPU-задачи в отдельных интерпретаторах Python В Python 3.14 InterpreterPoolE…
  6. Oct 8, 2026Как отличить отсутствие аргумента от None в Python Если None — допустимое значение настрой…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →