2015-09-22 13 views
9

Sto utilizzando il backport Enum enum34 con Python 2.7.Accesso Python enum34 per nome

Secondo la documentazione dovrebbe essere possibile accedere ai membri di enum tramite il loro nome, utilizzando l'accesso all'elemento. Cioè, il seguente dovrebbe funzionare:

from enum import Enum 

class Foo(Enum): 
    bar = 1 
    baz = 2 

print(Foo['bar']) 

Tuttavia, quando si esegue il codice ottengo questo errore nell'ultima riga:

TypeError: 'type' object has no attribute ' __getitem__ '

Mi sto perdendo qualcosa qui o è questo functionallity semplicemente non implementato nel backport 2.7?

+1

Funziona per me (sia Python 2 che Python 3). – vaultah

+0

@vaultah: l'ho appena testato in un nuovo virtualenv vergine dove ho installato solo enum34 e lì ha funzionato. Quindi forse c'è un conflitto con qualche altro pacchetto? Qualche idea su come posso rintracciarlo? – luator

+6

Che cosa significa import enum; print (enum .__ file __) 'ti dice che è importato? Forse hai un modulo diverso installato altrove. Quindi confronta il file con il nuovo contenuto del pacchetto 'lib/python2.7/site-packages/enum /' virtualenv per vedere se hai una vecchia versione. –

risposta

8

Potrebbe verificarsi un conflitto con il modulo Enum. Prova questo:

pip uninstall Enum

Con entrambi Enum e Enum34 installato, questo non ha funzionato. Dopo aver disinstallato Enum, ha funzionato come un fascino.