Metrick

Untitled

Aug 21st, 2014
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.39 KB | None | 0 0
  1. class EnumMeta:
  2.     def __init__(cls, className, inherits, dict):
  3.         cls.__class__.__name__ = inherits[0].__class__.__name__ \
  4.             if inherits \
  5.             else className
  6.         cls.__dict__ = dict
  7.  
  8.     def __iter__(cls):
  9.         for key in cls.__dict__:
  10.             if not key.startswith('__'):
  11.                 yield cls.__dict__[key]
  12.  
  13.     def __contains__(cls, item):
  14.         return item in cls.__iter__()
  15.  
  16.     def __call__(cls, *args, **kwargs):
  17.         return cls.list()
  18.  
  19.     def dict(cls):
  20.         result = dict()
  21.         for key in cls.__dict__:
  22.             if not key.startswith('__'):
  23.                 result[key] = cls.__dict__[key]
  24.         return result
  25.  
  26.     def list(cls):
  27.         return list(cls.__iter__())
  28.  
  29.  
  30. class Enumeration:
  31.     __metaclass__ = EnumMeta
  32.  
  33.  
  34. class ThrowTypes(Enumeration):
  35.     (GRENADE_F1, HOMEMADE_GRENADE, ATOMIC_GRENADE, STONE,
  36.     TEST_CREATURE_GRENADE, BIO, OUTCAST, RGD5_GRENADE,
  37.     F1_FAKE_GRENADE, RGN_GRENADE, RGO_GRENADE, MINE, SNOW_GRENADE,
  38.     FLASH_GRENADE, WEB_GRENADE, POISON_GRENADE, GLUE_GRENADE,
  39.     HOMEMADE_ACID_GRENADE, SMOKE_GRENADE, YETI, SPIDER_WEB, STONE_GW, SPORES_GRENADE,
  40.     HOMEMADE_MINE) = xrange(24)
  41.  
  42.  
  43.  
  44. print ThrowTypes
  45. print ThrowTypes.GRENADE_F1, ThrowTypes.RGO_GRENADE
  46.  
  47. for T in ThrowTypes:
  48.     print T
  49.    
  50. print 5 in ThrowTypes
  51. print ThrowTypes.dict()
  52. print 'SMOKE_GRENADE' in ThrowTypes.dict()
Advertisement
Add Comment
Please, Sign In to add comment