Каковы типы встроенных аргументов __exit__ Python?Python

Программы на Python
Ответить
Anonymous
 Каковы типы встроенных аргументов __exit__ Python?

Сообщение Anonymous »

Классы имеют определяемую функцию __exit__, которая позволяет реализовать менеджер контекста.

Она принимает необходимые аргументы:

Код: Выделить всё

def __exit__(self, exc_type, exc_val, exc_tb):
но я не могу найти четкого определения того, что это за аргументы и их типы.

Вот мое лучшее предположение что это такое и почему, но я не совсем уверен:

Код: Выделить всё

def __exit__(self, exc_type: Exception, exc_val: TracebackException, exc_tb: TracebackType):
exc_type

Python определяет класс TracebackException, который принимает аргумент exc_type, который используется контекстуально в конструкторе внутри issubclass с SyntaxError, что означает, что exc_type действительно является своего рода исключением, от которого наследуется SyntaxError.

exc_val

Кроме того, в этом классе TracebackException есть аргумент exc_value, который соответствует до наш exc_val, который, похоже, имеет различные атрибуты, такие как __cause__, __context__ и другие атрибуты, которые все определены в самом TracebackType. Это заставляет меня думать, что этот параметр сам по себе является экземпляром TracebackException.

exc_tb

Python определяет функцию walk_tb, которая использует exc_tb в качестве аргумента (отслеживается вручную из docs.python.org), и этот объект имеет атрибуты tb_frame, tb_lineno и tb_next который можно проследить до класса TracebackType в библиотеке typeshed.

Мысли?

Подробнее здесь: https://stackoverflow.com/questions/588 ... ment-types
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»