from copy import deepcopy class Base: symbol: str def __init__(self, symbol, store): self.symbol = symbol self.store = store self.dirty = True def dict(self): r = deepcopy(self.__dict__) del r['store'] del r['dirty'] return r def path(self): raise NotImplementedError('path') def ext(self): raise NotImplementedError('extension') def type(self): return self.__class__.__name__ def __str__(self): return f'{self.symbol}.{self.ext()}'