У меня есть класс
class Resource:
__init__(self):
self.resource = ...
__enter__(self):
#can fail, such as file open returning error, memory allocation fail, or any more complicated failure
__exit__(self,*args):
...
Теперь я хочу
with Resource() as r:
r.do_stuff()
Но если r
не удалось __enter__()
успешно, это не удалось.
Какой правильный, питонный способ справиться с этим?
Я не хотел использовать некоторые is_allocated_correctly
, например,
with Resource() as r:
if r.is_allocated_correctly():
r.do_stuff()
, поскольку это ломает точкуиз заявления с.
Пожалуйста, дайте мне некоторое представление, что делать здесь.