ENUM in Python

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

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

    ENUM Klasse

    Quellcode

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


    Dynamische Variante

    Definition der Funktion

    Quellcode

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


    So wird die Funktion genutzt

    Quellcode

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


    Dynamische Variante mit Sequenzen

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

    Definition der Funktion

    Quellcode

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


    Nutzung wie folgt

    Quellcode

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

    7.015 mal gelesen