You are not logged in.

  • Login

Thursday, January 13th 2011, 10:00pm

Tags

enum, Python

Abstract

Python bringt kein echtes ENUM mit, wie man es von anderen Programmiersprachen kennt. Hier werden andere Lösungen vorgestellt.

Article

1. ENUM Klasse


Python Quellcode

1
2
3
4
5
class Animal:
    DOG=1
    CAT=2
 
x = Animal.DOG


2. Dynamische Variante


Definition der Funktion

Python Quellcode

1
2
def enum(**enums):
    return type('Enum', (), enums)


So wird die Funktion genutzt

Python Quellcode

1
2
3
4
5
6
7
>>> Numbers = enum(ONE=1, TWO=2, THREE='three')
>>> Numbers.ONE
1
>>> Numbers.TWO
2
>>> Numbers.THREE
'three'


3. Dynamische Variante mit Sequenzen


Es können auch einfach Sequenzen unterstützt werden:

Definition der Funktion

Python Quellcode

1
2
3
def enum(*sequential, **named):
    enums = dict(zip(sequential, range(len(sequential))), **named)
    return type('Enum', (), enums)


Nutzung wie folgt

Python Quellcode

1
2
3
4
5
>>> Numbers = enum('ZERO', 'ONE', 'TWO')
>>> Numbers.ZERO
0
>>> Numbers.ONE
1

Lexikon 4.1.5, developed by www.viecode.com