Guest User

Untitled

a guest
Apr 20th, 2012
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1.  
  2. class EnumerableBase(object):
  3.     def __init__(self, name, **kargs):
  4.         self.__dict__.update(kargs)
  5.         self.name = name
  6.         self.register(self)
  7.        
  8.     def __repr__(self):
  9.         return '<%s(%r)>' % (self.__class__.__name__, self.name)
  10.  
  11.     @classmethod
  12.     def register(cls, e):
  13.         cls.values.append(e)
  14.         cls.name2value[e.name] = e
  15.  
  16. def Enumerable(clsname):
  17.    
  18.     return type(clsname, (EnumerableBase,), dict(
  19.         values = [],
  20.         name2value = {},
  21.     ))
  22.  
  23.  
  24. if __name__ == '__main__':
  25.     # usage example
  26.    
  27.     AgentModeEnum = Enumerable('AgentModeEnum')
  28.    
  29.     WorldEnum = Enumerable('WorldEnum')
  30.     FLAT = WorldEnum('flat')
  31.     ROUND = WorldEnum('round')
  32.    
  33.     class Agent:
  34.         WAIT = AgentModeEnum('wait')
  35.         WALK = AgentModeEnum('walk')
  36.         RUN = AgentModeEnum('run')
  37.         THINK = AgentModeEnum('think')
  38.        
  39.     print AgentModeEnum.values, AgentModeEnum.name2value.get('run')
  40.     print WorldEnum.values
Advertisement
Add Comment
Please, Sign In to add comment