TypeError: unsupported operand type(s) for |: 'InputTypes' and 'InputTypes'
3 Réponses :
Au lieu d'utiliser le Enum de base, vous pouvez utiliser un IntFlag :
from enum import IntFlag
class InputTypes(IntFlag):
# Rest of your code
Mon interprète ne semble pas être en mesure de trouver IntFlag. Est-ce une solution python3? Comment le ferions-nous également en 2.7?
La classe de base Enum remplace l'accès aux variables de classe pour leur faire renvoyer une instance de la sous-classe elle-même. Si vous ne sous-classez pas Enum (et supprimez les virgules), votre code ne plantera pas.
Notez que vous pouvez utiliser des ensembles d'entrées Enum au lieu de bit maps pour obtenir le même résultat en utilisant InputTypes (Enum)
Pour Python 2, vous souhaitez utiliser Si les valeurs sont importantes (ce qui signifie que vous les utiliserez comme des entiers), utilisez IntFlag à la place. 1 Divulgation: Je suis l'auteur du Python stdlib aenum (Advanced Enum) a > 1 . Si les valeurs numériques ne sont pas importantes, vous pouvez utiliser Flag :from aenum import Flag, auto
class InputTypes(Flag):
"""
Flags to represent the different kinds of input we
are acting on from the user
"""
KEYBOARD = auto()
MOUSE_BUTTONS = auto()
MOUSE_MOVE = auto()
ALL = KEYBOARD | MOUSE_BUTTONS | MOUSE_MOVE
Enum , le enum34 backport et Avancé Bibliothèque d'énumération ( aenum ) .