2015-12-26 21 views
6

sagen, dass ich eine solche Python Enum Klasse:Gibt es einen eigenen Weg, um die Anzahl der Elemente in einem Python `Enum` zu erhalten?

from enum import Enum 

class Mood(Enum): 
    red = 0 
    green = 1 
    blue = 2 

Gibt es eine natürliche Art und Weise die Gesamtzahl der Elemente in Mood zu bekommen? (Wie, ohne über sie zu durchlaufen, oder ein zusätzliches n Element hinzuzufügen, oder eine zusätzliche nclassproperty, etc.)

Hat die enum Modul bieten eine solche Funktionalität?

Antwort

6

Ja. Enum s haben mehrere zusätzliche Fähigkeiten, die normale Klassen nicht haben:

class Example(Enum): 
    this = 1 
    that = 2 
    dupe = 1 
    those = 3 

print(len(Example)) # duplicates are not counted 
# 3 

print(list(Example)) 
# [<Example.this: 1>, <Example.that: 2>, <Example.those: 3>] 

print(Example['this']) 
# Example.this 

print(Example['dupe']) 
# Example.this 

print(Example(1)) 
# Example.this 
+0

Meine enum (Python 3.4) ist nicht statisch sondern erstellt wie hier [http://stackoverflow.com/a/1695250/150978] (die eine Form automatische Enumeration) und die letzten drei Befehle funktionieren nicht für solch ein enum. Gibt es in Python verschiedene enum-Implementierungen? – Robert

+0

Es gibt eine Third-Party-Bibliothek namens 'enum', die ** nicht ** dasselbe ist wie die offizielle 3.4' Enum', noch ist es [backport] (https://pypi.python.org/pypi/enum34) und [erweiterte] (https://pypi.python.org/pypi/aenum) Versionen. Was auch immer "enum" Sie verwenden, ist nicht einer der drei neuen. –

7

Haben Sie versucht print(len(Mood))?

+0

habe ich nicht. Dies war die Lösung. Prost;) –

Verwandte Themen