Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class EnumerableBase(object):
- def __init__(self, name, **kargs):
- self.__dict__.update(kargs)
- self.name = name
- self.register(self)
- def __repr__(self):
- return '<%s(%r)>' % (self.__class__.__name__, self.name)
- @classmethod
- def register(cls, e):
- cls.values.append(e)
- cls.name2value[e.name] = e
- def Enumerable(clsname):
- return type(clsname, (EnumerableBase,), dict(
- values = [],
- name2value = {},
- ))
- if __name__ == '__main__':
- # usage example
- AgentModeEnum = Enumerable('AgentModeEnum')
- WorldEnum = Enumerable('WorldEnum')
- FLAT = WorldEnum('flat')
- ROUND = WorldEnum('round')
- class Agent:
- WAIT = AgentModeEnum('wait')
- WALK = AgentModeEnum('walk')
- RUN = AgentModeEnum('run')
- THINK = AgentModeEnum('think')
- print AgentModeEnum.values, AgentModeEnum.name2value.get('run')
- print WorldEnum.values
Advertisement
Add Comment
Please, Sign In to add comment