Используя Python 3, я распаковал код flufl.enum в дерево исходных текстов приложения, чтобы попробовать его. Образец кода:Неожиданно: flufl.enum печатает целочисленное значение
from taurine.flufl.enum import Enum
class Colors(Enum):
red = 1
green = 2
blue = 3
print(Colors.red)
red = Colors.red
print("red == Colors.red "+str(red == Colors.red))
print("red == Colors.blue "+str(red == Colors.blue))
print("red is Colors.red "+str(red is Colors.red))
Все работает как ожидается, кроме печати (Color.red). Согласно http://packages.python.org/flufl.enum/docs/using.html, я ожидал, что он напечатает «Colors.red», но это печать 1. Кто-нибудь, знакомый с этим пакетом, знает, есть ли способ заставить его печатать «Colors.red»? Я разместил вопрос на сайте библиотеки, но думал, что у кого-то здесь может быть и опыт.
EDIT: Это не работает, как ожидалось, если я определить цвета с:
Colors = make_enum('Colors','red green blue')
Но я предпочитаю синтаксис:
class Colors(Enum):
red = 1
green = 2
blue = 3
Хмм. Вероятно, у Python 3 есть предупреждение, когда атрибут \ _ \ _ metaclass \ _ \ _ появляется в определении класса. –
Согласился, это бы быстрее меня подсказало. –