我在Python 2.7中使用enum34为数据库编写不同的选项(使用Flask和Flask-Admin),枚举如下所示:
class Veggie(enum.Enum):
celery = 1
tomato = 2
broccoli = 3
然后我按如下方式使用它来将值指定为选项:
my_veggie = Veggie.celery
我正在使用整数,因为我希望它以整数形式存储在数据库中。
然而,当我输出这个,对于最终用户,unicode(Veggie.celery)将给出以下字符串:Veggie.celery,但我希望将它作为用户友好的字符串,例如“ Veggie:Celery“,”Veggie:Tomato“等......我显然可以操纵unicode()返回的字符串,但我怀疑应该有一种更容易,更清晰的方法来使用类方法或其他东西内置enum?
谢谢,
答案 0 :(得分:0)
如果您想更改Enum
课程的字符串输出,只需添加自己的__str__
方法:
class Veggie(Enum):
celery = 1
tomato = 2
broccoli = 3
def __str__(self):
return self.__class__.__name__ + ': ' + self.name
>>> Veggie.tomato
<Veggie.tomato: 2>
>>> print Veggie.tomato
Veggie: tomato
如果您经常这样做,请创建自己的基类:
class PrettyEnum(Enum):
def __str__(self):
return self.__class__.__name__ + ': ' + self.name
并从中继承:
class Veggie(PrettyEnum):
celery = 1
tomato = 2
broccoli = 3