Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

274
Vistas
Iteración de enumeración de sugerencias de tipo PyCharm

La clase de enumeración de Python admite la iteración, pero PyCharm tiene problemas para resolver esto.

 from enum import Enum class Color(Enum): RED = 0 BLUE = 1 for color in Color: # Warning: Expected 'collections.Iterable', got 'Type[Color]' instead print(color)

Aunque existe el método EnumMeta.__iter__ , PyCharm tiene problemas para resolver esto.

No me importa agregar manualmente sugerencias de tipo para solucionar el problema, simplemente no estoy seguro de qué y dónde.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Tal vez no sea la solución más limpia, pero lo siguiente funciona para mí:

 from enum import Enum import typing class Color(Enum): RED = 0 BLUE = 1 Color = Color # type: typing.Union[typing.Type[Color], typing.Iterable]

PyCharm admite sugerencias de tipo utilizando el formato definido en PEP 484 (para versiones de Python inferiores a 3.5 en forma de comentarios, para versiones 3.5 y superiores en forma de anotaciones).

Una nota importante aquí es que en la versión de Python anterior a la 3.5, la importación del módulo de typing debe protegerse de alguna manera (PyCharm reconoce esta importación como válida, incluso sin tener el módulo de typing instalado en los paquetes del sitio; sin embargo, cuando se ejecuta el código, ocurre ImportError ).

over 4 years ago · Santiago Trujillo Denunciar

0

Una solución que utilicé en PyCharm fue mediante el uso de __members__ con .items()

 from enum import Enum class Color(Enum): RED = 0 BLUE = 1 for name, color in Color.__members__.items(): print(name, color)

Volviendo:

 ('RED', <Color.RED: 0>) ('BLUE', <Color.BLUE: 1>)

Consulte el siguiente enlace como referencia:

https://cpython-test-docs.readthedocs.io/en/latest/library/enum.html#iteration

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda