Как я могу получить доступ к атрибутам менеджера контекста?
Я хочу сделать что-то вроде:
class my_context(object):
def __init__(self):
self.obj1 = Obj()
self.obj2 = Obj()
...
def __enter__(self):
''' initialize objects '''
def __exit__(self, type, value, tb):
''' uninitialize objects '''
Здесь очень много Obj
атрибуты, которые являются ресурсами, которые должны быть закрыты / удалены / и т.д. Я надеялся использовать менеджер контекста, чтобы настроить их, а затем избавиться от них. Однако я обнаружил, что не могу получить доступ к атрибутам при попытке:
with my_context() as cont:
cont.obj1 # doesn't work
Есть ли способ получить доступ к этим атрибутам?
1 ответ
Решение
Для with... as
Синтаксис для работы, ваш __enter__()
должен вернуть значение.
Если вы хотите использовать те же атрибуты, что и ваш my_context
класс обеспечивает, вы, вероятно, хотите вернуть self
,