2010-07-14 4 views
16

Possible en double:
What’s the best way to implement an ‘enum’ in Python?de ENUM Python équivalent

Quel est le langage Python pour une liste de noms indexés différemment (comme Enum en C/C++ ou Java)? Clarification: Je souhaite qu'une propriété d'une valeur soit définie sur une plage restreinte, telle que les suites de cartes Heart, Club, Spade, Diamond. Je pourrais le représenter avec un int dans la plage 0..3, mais cela permettrait une entrée hors plage (comme 15).

+1

http://stackoverflow.com/questions/36932/quelle est la meilleure façon d'implémenter un enum-in-python –

+0

Question similaire: http://stackoverflow.com/questions/36932/whats-the-best-way-to-implement-an -enum-in-python – Jordan

Répondre

15
class Suite(object): pass 

class Heart(Suite): pass 
class Club(Suite): pass 

etc.

Une classe en python est un objet. Vous pouvez donc écrire

x=Heart 

etc.

7

ici est très populaire sur la même question stackoverflow

Modifier:

class Suite(set): 
    def __getattr__(self, name): 
     if name in self: 
      return name 
     raise AttributeError 

s1 = Suite(['Heart', 'Club', 'Spade', 'Diamond']) 
s1.Heart