Jan-28-2021, 06:10 PM
You don't need a base class to create a context manager, you just need to implement the enter/exit interface.
>>> class TimeHistory: ... def __init__(self, filename): ... self.filename = filename ... self.fobj = None ... def __enter__(self): ... self.fobj = open(self.filename, "r") ... return self ... def __exit__(self, *args): ... if self.fobj: ... self.fobj.close() ... self.fobj = None ... >>> with TimeHistory('test.txt') as file: ... print(file) ... <__main__.TimeHistory object at 0x000001AA1BB40AF0>