class UniqueThingFactory (object):
class UniqueThing (object):
def __init__(self, _id, factory):
self.factory = factory
self.factory.ids[_id] = self
self._id = _id
def __del__(self):
del self.factory.ids[self._id]
ids = {}
def get_new_unique_thing(self, _id):
if _id in self.ids:
raise ValueError("thing already exists")
return self.UniqueThing(_id, self)
unique_thing_factory = UniqueThingFactory()