class TangoScope: def __init__(self): self.defs = {} def set_def(self, ident, val): self.defs[ident] = val def get_def(self, ident): return self.defs.get(ident) class ChildTangoScope(TangoScope): def __init__(self, parent): super().__init__() self.parent = parent def get_def_local(self, ident): return self.defs.get(ident) def get_def(self, ident): local = self.get_def_local(ident) if local is None: return self.parent.get_def(ident) else: return local class RootTangoScope(TangoScope): pass