Hi all, I apologize in advance for the "foggy" question, but I've myself unclear ideas.
Anyway... Python has "context manager". For example, the "open()" class can be simply used as follow: with open(...) as fp: fp.do_something() On the other hand, it is also possible to do: fp = open() fp.do_something() fp.close() Now, if we want to use "open()" in a class, it would be possible to apply the second variant, with "self.fp = open()" in "__init__(...)", "self.fp.close()" maybe in "__del__(...)" and having few methods doing this and that with the "self.fp". Apparently, the "with" context manager is not usable in classes, at least not with __init__() & co. It seems there are classes ("gradio.Blocks()", for example) which are *only* usable with context manager. I found more... One way to do the same as in "open()" is: def __init__(...): fp = open(...) fp.__enter__() ... def __del__(...): fp.__exit__() fp.close() This works, but it seems quite ugly. I could not find any other way, in case the class do only support context manager. Question: is there any other way to use a context manager only object within a class, with methods accessing the object? Or any other solution to the same situation? Thanks a lot in advance. P.S.: currently gmail posts are deleted, due to excessive spam, so I'll not see any reply coming from this family of addresses. bye, -- piergiorgio -- https://mail.python.org/mailman/listinfo/python-list