class SoundNode: def __init__(self, order, name): self.order = order self.name = name self.properties = dict() # {k: v} def __repr__(self): return f'{self.order}:{self.name}' def g(self, k): return self.properties.get(k) def s(self, k, v): self.properties[k] = v class Sonnum: def __init__(self): self.nodes = dict() # {order: name} self.properties = dict() # {k: v} def add_node(self, name): order = len(self.nodes) self.nodes[name] = SoundNode(order, name) return self.nodes[name] def node_by_name(self, name): for order, node in self.nodes.items(): if node.name == name: return node def node_by_order(self, order): return self.nodes.get(order) def g(self, k): return self.properties.get(k) def s(self, k, v): self.properties[k] = v