Я знаком с использованием python with
инструкцией в качестве средства обеспечения финализации объекта в случае генерирования исключения. Обычно это выглядит
with file.open('myfile.txt') as f:
do stuff...
которая является короткой для
f = file.open('myfile.txt'):
try:
do stuff...
finally:
f.close()
или что-то другое, что может предложить класс.
Недавно я натолкнулся на часть кода, касающуюся OpenGL, который представил это:
with self.shader:
(Many OpenGL commands)
Следует отметить, что отсутствие какого - либо в as
ключевого слова. Означает ли это, что методы класса __enter__
и __exit__
еще должны быть вызваны, но что объект никогда явно не используется в блоке (т.е. Он работает через глобальные или неявные ссылки)? Или есть какой-то другой смысл, который ускользает от меня?